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.
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 opened | Sequence continues | Sequence continues |
| Link clicked | STOPS | Sequence continues |
| Video played | STOPS | Sequence continues |
| Review attempted | STOPS | Sequence continues |
| Redirected to review site | STOPS | STOPS |
| Testimonial submitted | STOPS | STOPS |
| Private feedback given | STOPS | STOPS |
| Bounce / spam complaint / unsubscribe | STOPS | STOPS |
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.
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.
| Channel | Credit cost |
|---|---|
| 1 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 |
| MMS | SMS segment cost +1 credit |
| Flat 1 credit per message | |
| Any channel via the customer's own provider | 0 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.
| Badge | Timeline text | What it really means |
|---|---|---|
| `Added` | Contact added to campaign | The contact entered the campaign; the sequence is scheduled. |
| `Invite Sent` | Invited to leave review | An invite actually went out on at least one channel. |
| `Invite Opened` | Opened | The email registered an open — unreliable, scanner-inflated, and never stops a sequence. |
| `Invite Clicked` | Clicked | The contact clicked the review link. |
| `Video Played` | Video played | The contact played a video in the invite flow. |
| `Review Attempted` | Review attempted by contact | An 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 review | The contact was actually forwarded to an external review site. |
| `Review Submitted` | Review left by contact | A first-party testimonial was actually submitted. |
| `Private Feedback Given` | Private feedback given | The contact left private feedback instead of a public review. |
| `Unsubscribed` | Unsubscribed | The contact opted out; the sequence stopped. |
| `Not Sent` | Review request not sent | Blocked by the duplicate-invite window at add time; final for that add. |
| `Bounced` | Bounced | The email could not be delivered; the sequence stopped. |
| `Marked as Spam` | Marked as spam | The contact flagged the message as spam; the sequence stopped. |