Skip to main content
12 min readReview Campaigns

Campaign Sending Rules

The engine-room reference for review campaigns: exactly when invites send, what stops a sequence, how the duplicate-invite window works, and how every send is charged in credits.

Review campaigns look simple on the surface — add a contact, invites go out on a schedule — but the engine underneath follows precise rules about when a step sends, what ends a sequence early, when a contact is silently skipped, and how many credits each message costs. When a customer asks "why did this contact only get one email?" or "why was I charged 2 credits for one SMS?", the answer is always one of the rules on this page.

This guide covers the default sequence and its timing, the two stop-sequence modes, the duplicate-invite window (including its most surprising behavior around paused campaigns), the CSV daily limit, `Send Now`, credit pricing per channel, and how the platform decides which provider and sender identity each message goes out through. It closes with a glossary of every activity status you will see on a contact.

The default sequence and when steps actually send

Campaigns live at `Grow -> Campaigns -> Request Reviews`. Every new campaign ships with a 4-step default sequence: an immediate step (email + SMS), a step on day 3 (email only), a step on day 7 (email + SMS), and a final step on day 14 (email only).

Two timing details matter here. First, each step's wait time counts from the PREVIOUS step's send — not from when the contact was added. If step 2 is delayed for any reason, step 3's clock starts from step 2's actual send. Second, the channels on each step are automatically trimmed to whatever the customer's plan allows: if the plan has no SMS, the email + SMS steps simply send email.

Sends are processed by schedulers that run every 15 minutes, so a step never fires at the exact second its wait time elapses — expect up to a 15-minute drift. All campaign times are UTC, and a send window of 00:00-00:00 means "all day" (no window restriction).

  • Step 1: immediately — email + SMS
  • Step 2: 3 days after step 1 — email
  • Step 3: 7 days after step 2 — email + SMS
  • Step 4: 14 days after step 3 — email
  • Wait times count from the previous step's send, not from when the contact was added.
  • Channels are auto-trimmed to the customer's plan; schedulers run every 15 minutes.
  • All times are UTC; a send window of 00:00-00:00 means all-day.
Worth knowing

This is a customer-side screen. Because you are in your agency account, you can reach it two ways: go to `Business -> Customers -> Manage Customers` and click `Open dashboard` on the customer — you go into their dashboard with nothing locked, even features their plan hides, and a bar at the top shows whose dashboard you are in (handy for done-for-you setups or granting access beyond a plan); or choose `View as customer` on the same page to see their dashboard exactly as they see it, with their plan's limits. If your sidebar shows the `Agency` / `Customer` switcher, the `Customer` tab plus the location switcher is a shortcut to the same place.

Stop sequence: the two modes and what actually ends a sequence

Under the campaign's `Advanced Settings` you choose when the follow-up sequence stops for a contact. There are two modes, and they behave very differently.

`Upon clicking the review link` is the DEFAULT. In this mode, anything the contact does beyond merely opening the email ends the sequence: clicking the link, playing a video, attempting a review, being redirected to a review site, submitting a testimonial, or leaving private feedback. This is the "stop as soon as they engage" mode — one click and the remaining steps are cancelled.

`Upon being redirected to review site` is the persistent mode. Opens, clicks, and even review attempts do NOT stop the sequence — the contact keeps receiving follow-ups until they are actually redirected to a review site, submit a testimonial, or leave private feedback. Use this when customers complain that contacts who clicked but never reviewed stopped getting reminders.

In BOTH modes, three things always stop the sequence regardless of the setting: a bounce, a spam complaint, or an unsubscribe. And in both modes an email OPEN alone never stops anything — opens are unreliable because email security scanners inflate them, which is also why the `Invite Opened` status should never be trusted as real engagement.

  • `Upon clicking the review link` (default): any engagement beyond an open stops the sequence — click, video play, review attempt, redirect, testimonial, private feedback.
  • `Upon being redirected to review site`: only an actual redirect to a review site, a submitted testimonial, or private feedback stops it — opens, clicks, and review attempts do not.
  • Always-stop events in both modes: bounce, spam complaint, unsubscribe.
  • Never-stop event in both modes: an email open on its own.
Event`Upon clicking the review link` (default)`Upon being redirected to review site`
Email openedSequence continuesSequence continues
Link clickedSTOPSSequence continues
Video playedSTOPSSequence continues
Review attemptedSTOPSSequence continues
Redirected to review siteSTOPSSTOPS
Testimonial submittedSTOPSSTOPS
Private feedback givenSTOPSSTOPS
Bounce / spam complaint / unsubscribeSTOPSSTOPS

The duplicate-invite window

To keep contacts from being over-messaged, every campaign enforces a duplicate-invite window: 14 days by default, configurable from 1 to 365 days per campaign via `Ignore Duplicate Requests` in `Advanced Settings`.

The window counts ACTUAL sends across ALL campaigns for that contact — any email, SMS, or WhatsApp invite. That means an invite sent by one campaign blocks another campaign from inviting the same contact until the window passes; the check is per contact, not per campaign.

A contact added inside the window is stamped `Not Sent`, with the activity timeline reading `Review request not sent`. That state is FINAL for that add: the contact does not automatically start sending later once the window elapses. If the customer wants them invited, re-add the contact to the campaign after the window has passed.

  • Default window: 14 days; configurable 1-365 days per campaign under `Ignore Duplicate Requests`.
  • Counts actual sends on any channel (email, SMS, WhatsApp) across every campaign — cross-campaign blocking is by design.
  • `Not Sent` is permanent for that add — re-add the contact after the window passes to invite them.
Worth knowing

GOTCHA — the window check runs when the contact is ADDED, and paused campaigns still evaluate it. Contacts imported while a campaign is paused can be permanently marked `Not Sent` even though nothing was about to send. Separately, contacts who were queued and are released when a pause is lifted re-check the window at send time — if another campaign invited them in the meantime, they fail with `Review request has already been sent to the customer in the last X days.` Also note that pausing a campaign removes it from every send picker, so it cannot be selected for new invites while paused.

The daily limit and `Send Now`

The daily limit (default 10, with a `No limit` toggle) is a CSV-import setting: when a customer imports a list, it spreads the sends across days instead of blasting the whole file at once. One important condition — it only spreads when the campaign has a real send-time window configured. With an all-day window (00:00-00:00), imports schedule immediately and the limit does not stagger anything.

`Send Now` on a campaign card is a shortcut, not a bypass: it opens the invite modal with THAT campaign preselected, and from there you can invite a single contact, upload a CSV, or wire up an automation. Single invites default to sending immediately, or after a delay of N hours if you choose one — and in every case the send still respects the campaign's send-time window.

  • Daily limit: default 10, `No limit` available — applies to CSV imports.
  • Spreading only happens with a real send window; an all-day window means imports schedule immediately.
  • `Send Now` preselects the campaign in the invite modal (single contact, CSV, or automation).
  • Single invites: immediately or after N hours, always within the campaign's send window.

How credits are charged

Every channel has a precise credit formula, and SMS is the one that surprises people.

SMS is charged per segment. A plain-GSM message fits 160 characters per segment; a single emoji or special character switches the entire message to Unicode encoding at 70 characters per segment. Long messages split into multi-part segments of 153 characters (GSM) or 67 characters (Unicode) each. Attaching media (MMS) adds +1 credit on top.

Compliance text can push a message over a segment boundary without anyone typing it. Toll-free Twilio senders may automatically get a `Reply STOP to unsubscribe.` line appended — and in Canada, a business-name prefix as well. That appended text counts toward the character total, so a 140-character message can land at 2 credits.

THE EXEMPTION: sends that go out through a provider the CUSTOMER owns never consume their plan credits — on any channel. Credits are only charged when the send routes through your agency-assigned provider or the platform default.

  • Email is always flat: 1 credit per email, regardless of length.
  • WhatsApp is always flat: 1 credit per message.
  • SMS segment boundaries: 160 characters (GSM) or 70 characters (any emoji/special character); multi-part messages use 153- or 67-character parts respectively.
  • MMS: +1 credit on top of the SMS segment cost.
  • Toll-free Twilio compliance text (`Reply STOP to unsubscribe.`, plus a business-name prefix in Canada) is appended automatically and counts toward the segment total.
  • Customer-owned provider = 0 credits, on every channel; agency-assigned or default provider = normal credit cost.
ChannelCredit cost
Email1 credit per email
SMS (GSM text)1 credit per 160-character segment; long messages use 153-character parts
SMS (with emoji / special characters)1 credit per 70-character segment; long messages use 67-character parts
MMSSMS segment cost +1 credit
WhatsAppFlat 1 credit per message
Any channel via the customer's own provider0 credits

Sender resolution: which provider sends, and which identity appears

Two separate chains decide how a message goes out. The first picks the PROVIDER (the account that physically sends); the second picks the SENDER IDENTITY (the from-name, from-address, or phone number the contact sees). They resolve independently.

Provider chain, in order: (1) the customer's own connected provider — for SMS and WhatsApp this additionally requires the own-provider option on their plan; (2) the provider you assigned to that organization; (3) your agency default provider.

Sender-identity chain, in order: (1) a from-name/number override set on the contact list itself; (2) the organization's sender override — which only applies when the message is actually sending via that organization's assigned provider; (3) the provider's default identity. Email from-address and from-name resolve the same way: list-level defaults first, then the platform default.

One exception: SignalHouse numbers are locked to the 10DLC campaign they were registered under, so per-organization sender overrides do not work on SignalHouse — to give organizations different numbers there, assign them different providers instead.

Finally, links inside SMS and WhatsApp messages are ALWAYS shortened to `revw.me` links. This is not cosmetic: the short links power click tracking and the stop-on-click behavior. Short links expire after 14 days, and there is no opt-out.

  • Provider: customer's own provider (plan-gated for SMS/WhatsApp) -> organization-assigned provider -> agency default.
  • Identity: contact-list override -> organization sender override (only on that org's assigned provider) -> provider default.
  • SignalHouse: numbers are locked to their registered 10DLC campaign — vary providers per org, not sender overrides.
  • SMS/WhatsApp links: always shortened to `revw.me` (tracking + stop-on-click); short links expire after 14 days.

Activity status glossary

Every contact in a campaign carries a status badge and an activity timeline. Two statuses are routinely misread: `Invite Opened` is inflated by email security scanners and should never be treated as engagement, and `Review Attempted` means the contact picked a star rating or headed toward a review site — an ATTEMPT, not a confirmed posted review, and scanners can inflate this one too. Only `Review Submitted` means a first-party testimonial was actually submitted.

BadgeTimeline textWhat it really means
`Added`Contact added to campaignThe contact entered the campaign; the sequence is scheduled.
`Invite Sent`Invited to leave reviewAn invite actually went out on at least one channel.
`Invite Opened`OpenedThe email registered an open — unreliable, scanner-inflated, and never stops a sequence.
`Invite Clicked`ClickedThe contact clicked the review link.
`Video Played`Video playedThe contact played a video in the invite flow.
`Review Attempted`Review attempted by contactAn ATTEMPT — they picked a star rating or headed toward a review site. Not a confirmed posted review; email scanners can inflate it.
`Redirected`Redirected to leave reviewThe contact was actually forwarded to an external review site.
`Review Submitted`Review left by contactA first-party testimonial was actually submitted.
`Private Feedback Given`Private feedback givenThe contact left private feedback instead of a public review.
`Unsubscribed`UnsubscribedThe contact opted out; the sequence stopped.
`Not Sent`Review request not sentBlocked by the duplicate-invite window at add time; final for that add.
`Bounced`BouncedThe email could not be delivered; the sequence stopped.
`Marked as Spam`Marked as spamThe contact flagged the message as spam; the sequence stopped.

Common questions