Output block in particular region from custom module drupal 7
Why aren't you creating a standard block which returns your form? Currently you have a page callback (http://yoursite.com/campaign), and you are injecting this into a block ...

Here is some sample code that could help you further:



function client_block_info()
{
    $blocks = array();

    $blocks['client_campaign'] = array(
        'info' =&gt; t('Area for clients to manage their campaigns'),
        'title' =&gt; t('Campaign Manager'),
        'region' =&gt; 'content', // Your desired region, can be edited in administration screen
        'status' =&gt; 1,
    );

    return $blocks;
}

function client_block_view($delta = '')
{
    $block = array();

    switch ($delta) {
        case 'client_campaign' :
            $block['content'] = client_block_content();
            break;
    }

    return $block;
}

function client_block_content()
{
    return drupal_get_form('client_campaign');
}

function client_campaign($form, &amp;$form_state)
{
    // Build your form

    return $form
}