- Answered calls send the text by default. If the member picked up and did not clearly decline, the offer text goes out. An ambiguous ending does not stop it. A muddled “sure, text it to me” should never cost a member their offer. A member who was not interested can simply ignore the text.
- A clear “no” is always respected. If the member declines on the call, nothing is sent.
- Unanswered calls get one last-resort text. When automatic retries are turned on and every attempt goes unanswered, hyzl sends the offer once by text. The member then still gets it. There is at most one such text per cancellation, ever. A signup recovery call nobody answers gets the same treatment, on either provider. hyzl first re-checks that the person has still not paid. It needs a positive win-back discount. A 0% signup workflow has no offer to text, so it sends nothing.
- An unredeemed offer gets one reminder text. A member sometimes gets the offer text and does not redeem it. hyzl then sends one reminder text. This applies to a win-back offer and a paywall signup offer alike, on Stripe or RevenueCat. It sends about 23 hours after the offer text. That is an hour before the claimed deadline. See The 24-hour offer window. hyzl sends the reminder text inside the member’s local daytime hours. There is at most one reminder text per cancellation, ever, and at most one per signup, ever.
- Opt-outs are honored automatically. hyzl never texts a member who has replied STOP to texts. It enforces their carrier-level opt-out at send time. Campaigns with recovery SMS turned off never send any of these texts.
- Proactive texts wait for calling hours. A last-resort or reminder text due outside 9am to 8pm sends when the window next opens. hyzl measures those hours in the member’s local time. A text right after a call is unaffected.
The 24-hour offer window
Every default offer text claims 24 hours. That holds on Stripe and RevenueCat, and for a paywall signup offer on either provider. The text after an answered call reads “…your exclusive 24-hour offer…”. The last-resort text after unanswered calls reads “…valid for 24 hours…”. hyzl sends the reminder text about 23 hours after the offer text. That lands one hour before the claimed deadline. It reads “…your 24-hour offer expires in 1 hour. Claim it here:…”. A win-back offer and a paywall signup offer both get it, on either provider. There is no separate setting to turn the reminder text on or off. What the deadline actually does differs by provider. On RevenueCat it is a scarcity claim. On Stripe it is a real cutoff. The next two sections cover each provider.On RevenueCat, the deadline is only a claim
Nothing enforces the RevenueCat deadline. The App Store offer code stays redeemable afterwards, and the link keeps working. A member who taps it two days later still gets the discount. hyzl still counts a later return as a save, inside the usual attribution window. The reminder text carries the same App Store redemption link the offer text carried. Writing your own offer text does not change the reminder. Customize the reminder itself if you want different reminder wording. See Write your own texts.On Stripe, the deadline is real
The Stripe deadline is real. A win-back resubscribe link and a paywall signup checkout link both get the reminder text. At reminder time hyzl mints a fresh checkout link. That fresh link hard-expires one hour after the reminder text sends. The original link stops working, and the fresh one carries the live deadline. hyzl sets that deadline from the send, not from the call. A reminder held for calling hours therefore still lands on a live link. The default Stripe reminder text always reads “…expires in 1 hour…”. It never falls back to the last-day wording. After the fresh link expires, a member who taps it sees Stripe’s standard expired checkout page. A signup offer on RevenueCat carries an App Store code instead. It follows the RevenueCat rule above. The reminder text carries the same redemption link, and the code stays redeemable after the claimed deadline.When the reminder text is late
hyzl sends proactive texts only between 9am and 8pm in the member’s local time. A reminder text due outside those hours waits for the window to open. On RevenueCat that wait can push the send past the 24 hours. hyzl then drops the hour from the wording. The RevenueCat reminder text reads “…your offer expires soon, today is your last day…” instead. It never claims an hour the offer no longer has. The Stripe reminder text never needs this fallback. Its deadline moves with the send, so it stays live.Replies to the reminder text
Where hyzl sends the reminder text from your recovery number, it ends with “Or reply with any questions.” A member who replies reaches your AI receptionist on that number. See When a member texts back. Where hyzl sends from a shared hyzl messaging number, there is nobody to reply to. The reminder text then leaves that line out. It carries your callback number instead, the same as every other offer text.The receptionist never confirms an expiry
Your AI receptionist never tells a member their offer expired, on either provider. It does not agree when a member says it did. A member who reports that the link itself does not work is sent to your support instead.Name your business in the text
By default the offer text (and the offer email) carries no business name. It reads “…great speaking with you. Here’s your exclusive 24-hour offer: 50% off…”. To have hyzl identify your business, set Company name in texts. The field is in the workflow’s campaign settings, in the text-message section of the campaign editor. The message then reads “…great speaking with you - this is Acme Fitness. Here’s your exclusive 24-hour offer: 50% off…”. Leave it blank to keep the unnamed copy. The offer names your win-back discount (e.g. “50% off”) whenever one is set. A 0% offer falls back to the generic “exclusive 24-hour offer” wording. You set the name per workflow, so each trigger and each provider (Stripe, RevenueCat) can carry its own. The last company name you save is prefilled on your next campaign, and you can edit it there. You therefore do not retype it.Write your own texts
hyzl writes every recovery text for you. You can replace the copy on any of them. Six messages carry their own editor:- The offer text after an answered win-back call.
- The last-resort offer text after unanswered win-back calls.
- The offer text after an answered signup recovery call.
- The last-resort offer text after unanswered signup recovery calls.
- The one-tap apply link text.
- The offer-expiry reminder text.
Where to write a text
Three screens edit the same six messages. Each one saves the copy to the workflow.- The creation wizard. Click New workflow on the Workflows page. On the offer step, What can the AI offer?, open See the texts we send.
- The workflow wizard. Click the edit (pencil) icon on the workflow’s row on the Workflows page. Open Review and save, then See the texts we send.
- The campaign editor. Open the text-message section of the workflow’s campaign settings.
- Click Customize on the message you want to rewrite
- Type your copy in the Message box
- Click Done
- Click Create Campaign in the creation wizard, or Save changes on the other two screens
What the editor shows
- The default copy, as the placeholder in the empty box. Leave the box blank to send it.
- They receive: your message, filled in the way the member gets it.
- The encoding and the segment count, updated as you type. A carrier splits a long text into segments and charges for each one. Plain text fits 160 characters per segment. hyzl replaces a curly quote or a dash with its plain equivalent before sending. An emoji has no plain equivalent, and it cuts every segment to 70 characters.
- Reset to default, which empties the box.
Placeholders
A placeholder fills in one value for each member. Four are available:{firstName}: the member’s first name.{companyName}: your Company name in texts.{discountPercent}: the win-back discount, as a number.{offerUrl}: that member’s own offer link.
- Every offer text, the apply link text, and the reminder text must carry
{offerUrl}. Without it the member has nothing to tap, so hyzl blocks the save. - The reminder text takes no
{discountPercent}placeholder. - Any other placeholder blocks the save. The error names the placeholders that message accepts.
- A message longer than 640 characters blocks the save. hyzl measures the stored message. A curly quote or a dash becomes its plain equivalent first. An ellipsis becomes three periods. The stored message can therefore be longer than what you typed.
The reminder has its own copy
The reminder has one stable default. Writing your own offer, apply-link, or pre-call copy does not change it. Write your own reminder copy and hyzl sends that instead, word for word.Text tracking
hyzl tracks every text with the reason it was sent. There are six reasons:- The member accepted on the call.
- The AI committed to it on the call.
- hyzl sent it by default after an unclear ending.
- hyzl sent it after missed calls about a cancellation.
- hyzl sent it after missed signup recovery calls.
- hyzl sent it as the reminder text.
Sending the offer text never changes a subscription by itself. Saves still
require the member to redeem. That means completing the checkout, redeeming
the App Store code, or accepting on the call explicitly. An ambiguous call can
result in a text, but never in a charge or an un-cancel.

