WorkestraDocs
PlatformCalendar & Scheduling

Single-Use Links

A scoped, expiring URL tied to a specific contact and a specific booking link template — book once, link goes dead.

A single-use link is a tokenized URL that lets one specific contact book exactly one meeting on a template booking link. The moment they book, the token expires.

Use it when:

  • You're sending a personalized "here's a link to schedule" message and you don't want it forwarded
  • You want to track which contact actually booked from which outbound touch
  • You want a "follow-up offer" on a specific contact (e.g. "you no-showed last week — here's a fresh link, valid for 7 days")
  • You want to send a short-lived calendar offer that disappears if not used
Single-use redirect

Screenshot needed — /single-use/<token> redirecting to /book/<slug> with the token in sessionStorage

Single-use vs one-off

These two sound similar — both are single-shot scheduling URLs. Here's the practical split:

One-offSingle-use
SlotsHardcoded list you setComputed from a normal booking link's availability
Tied toJust the URLA specific contact + a specific template booking link
SetupOne-time, manual offerGenerated programmatically (CRM workflow, follow-up, etc.)
Use case"Pick from these 3 times I'm offering""Book my normal link, but only this once"

A single-use link is a normal booking link with an extra sticker on it: "this contact, this token, one booking." The availability rules, pre-meeting form, branding, payment, and workflows of the template link all apply.

Creating one

Single-use links are usually created programmatically — from a CRM workflow when a deal hits a certain stage, from a sequence step, or from a no-show follow-up workflow. The host-facing UI is at /calendar/single-use (also reachable from a contact's CRM detail page).

FieldWhat it does
Template booking linkThe link whose availability and rules apply
ContactThe CRM contact this single-use is for. Email is captured here.
ExpirationOptional. After this time, the token URL returns "this link has expired." Default: 30 days.

A token is generated and stored on scheduling_single_use_links. The URL is /single-use/<token>. Copy it from the row; send it however you'd send any other link.

How the redirect works

The single-use page is a thin redirect. When a visitor hits /single-use/<token>:

  1. The token is validated server-side. If expired or already consumed, an error page renders.
  2. If valid, the token is stored in sessionStorage["workestra:single_use_token"] and the visitor is redirected to /book/<slug> of the template link.
  3. They book normally.
  4. The booking endpoint reads the sessionStorage token, validates it server-side again (TOCTOU re-check), records consumption (consumed_at, consumed_by_booking_id), and confirms.
  5. The sessionStorage entry is cleared on success.

If they close the tab between steps 2 and 4, the token is still consumable by reopening the URL — it's only marked consumed on actual booking confirmation. Repeat reopens are fine.

What "consumed" means exactly

OutcomeToken state
Visitor abandons before bookingStill valid until expiration
Visitor books → payment required → paysConsumed at payment confirmation
Visitor books → payment required → never pays → expiresStays valid (no consumption on pending_payment)
Visitor books normally → confirmedConsumed
Visitor books → reschedules laterStays consumed; reschedules don't re-open the link
Visitor books → cancels laterStays consumed; cancellation doesn't re-open the link

If you need a "if cancelled, give them another shot" pattern, generate a fresh single-use link from the cancellation workflow.

When the contact lookup matters

The contact tied to the single-use is used for two things:

  1. Pre-fill the booking pagename and email are auto-filled from the contact, no URL params needed.
  2. Strict email match — by default, the booker's email must match the contact's email. If the URL is forwarded to a different person, the booking is rejected with "this link is not for you."

To allow forwarding (e.g. a "send to a colleague" pattern), turn off Strict email match when creating the link. Forwarding then becomes safe — anyone can book on it, but the link still only works once.

Programmatic creation

The most common way to create single-use links is via Workflows on the No-show marked trigger:

  1. Add a workflow with the No-show trigger
  2. Add an Email step
  3. Use {{single_use_url}} in the body — Workestra generates a fresh token at send time

The same pattern works inside Sales sequences, Recruiting follow-ups, and FSM dispatch workflows. Each call creates a new token.

/calendar/single-use shows all open single-use tokens — contact, template link, expiration, status (open / consumed / expired). Filter by template, by contact, or by date range. CSV export works for outreach attribution.

  • One-Off Meetings — for "specific offered times" without an underlying booking link
  • Workflows — generate single-use links from automations
  • Booking Links — the template link that single-uses inherit rules from
  • CRM Integrations — push single-use generation events into Salesforce or HubSpot