Skip to main content
Some recovery calls carry an offer the member redeems themselves. What hyzl texts depends on the member’s subscription. A Stripe member who is still active or in a trial, and cancelling, gets a one-tap apply link. It keeps their current plan and applies the discount to that subscription. A Stripe member whose subscription has fully ended gets the resubscribe link, a fresh discounted checkout instead. RevenueCat workflows carry the App Store redemption code. hyzl texts the offer right after the call. The send policy is deliberately generous:
  • 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.
hyzl instructs the AI to say that the text is on its way. It says so clearly on the call, before it hangs up. The message therefore never arrives unannounced. Recovery offer texts also include your callback number, the same one spoken in voicemail. A member can therefore call you back as well as tap the offer link.

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.
Each workflow stores its own copy. Your cancellation, trial-end, and signup workflows can therefore each text differently. The pre-call heads-up text has its own editor in the same workflow. It carries no offer link.

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.
Then, on any of the three:
  1. Click Customize on the message you want to rewrite
  2. Type your copy in the Message box
  3. Click Done
  4. Click Create Campaign in the creation wizard, or Save changes on the other two screens
Your copy is saved with the workflow you are creating, in the same step that creates it. You do not create the workflow first and rewrite its texts afterwards. Close the creation wizard before that step, and hyzl asks you to confirm, because the copy is not saved yet. A message you saved carries a Customized chip on its card. A message you leave alone keeps the copy hyzl wrote for it.

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.
hyzl checks the placeholders before it accepts your copy:
  • 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.
The two missed-call reasons are counted separately. Your reporting can therefore tell a save off the cancellation text apart from a signup completed off its text. Each member’s texts appear on their timeline in the Activity log. The Activity summary line counts how many unreached members got the offer by 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.