Skip to main content
Campaign reviews are done by human reviewers, not automated systems. When they need something from you, the campaign status changes to changes_needed or rejected. Here’s how to read the feedback and get your campaign approved.

Campaign status lifecycle

The diagram shows the typical review lifecycle. deactivated and canceled are administrative states reachable from active (and earlier states for canceled); see the list below.
  • created: you’ve saved the campaign fields, but it hasn’t been submitted to Surge yet
  • pending: submitted, waiting for Surge to review it before sending it to the carriers
  • in_review: waiting for the carriers to review it
  • active: approved; you can attach phone numbers and send production traffic
  • changes_needed: reviewer flagged issues; you need to update and resubmit
  • rejected: campaign was rejected; see notes on appealing below
  • deactivated: previously active campaign that you or Surge canceled
  • canceled: you or Surge canceled the campaign
  • suspended: previously active campaign suspended by carriers
API status values. The campaign status field in API responses uses a condensed set of public values: created, in_review, active, rejected, canceled, deactivated. Both the pending and in_review internal states surface as "in_review" in the API. Both the changes_needed and rejected internal states surface as "rejected". Keep this in mind when polling for status or using the update table below.

Understanding “changes needed” feedback

When a campaign moves to changes_needed, Surge sends you an email with reviewer notes. Read it carefully — reviewers include specific details about what needs to change.
Common patterns and what they mean:

Updating a campaign

To address feedback, update the relevant campaign fields and resubmit. Campaigns can only be updated in certain statuses: If you try to update while in_review, wait for the review to complete. The reviewer will either approve it, request changes (moving it to changes_needed), or reject it. Only then can you update.
The campaign update endpoint requires the full field set, not a partial body. Send consent_flow, description, message_samples (≥2 items), privacy_policy_url, terms_and_conditions_url, use_cases, and volume together. Missing any field returns a validation_error.
After updating a changes_needed, rejected, or canceled campaign, the campaign moves back to pending and then in_review.

Checking campaign status

Poll the campaign endpoint to track the current status:
Or subscribe to the campaign.approved webhook event to get notified the moment a campaign goes active. This avoids polling. See Webhook Events.

Rejected campaigns

A rejected status is more serious than changes_needed. Unlike changes_needed, a rejection doesn’t automatically move the campaign back into the queue when you update it — you may need to create a new campaign entirely. Rejections related to spam or misuse may also affect your account’s ability to register future campaigns.
If your campaign is rejected:
1

Read the rejection notice carefully

Reviewers include the specific reason. Don’t guess.
2

Address every listed issue before doing anything else

Partial fixes typically lead to another rejection.
3

Contact Surge support

Confirm whether to resubmit the existing campaign or start a new one — the right move depends on the reason.
Make sure your opt-in flow, sample messages, and business identity are solid before resubmitting. If you’re unsure what went wrong, Avoiding Rejection covers the seven most common patterns.