Quotations/Subscriptions

Create a new Subscription

post/api/subscriptions

Request

  • Base URL: https://hellosafe.com
  • URL: https://hellosafe.com/api/subscriptions
  • Auth: OAuth 2 (password, token URL /api//openapi-auth)

Query parameters

depthnumber
localestring

Request body

clarityUserIdsstring nullable

All Clarity user IDs seen for this subscription. Links are built dynamically from IDs.

offerstring

ID of the offers

nbDisplayOffersnumber nullable
status'quoting' | 'askedToBeCalled' | 'blockingPrice' | 'leadGenerated' | 'presubscribing' | 'presubscribe_failed' | 'presubscribed' | 'paid' | 'subscribe_failed' | 'subscribed' | 'cancelled' required
leadStatus'new_lead' | '1st_follow_up' | '2nd_follow_up' | '3rd_follow_up' | 'lost_lead' nullable

Follow-up stage of the lead (replaces the Pipedrive pipeline stages). Empty until the subscription becomes a lead; set to New Lead automatically and then moved along by the follow-up automation.

lastAutoFollowUpEmailSentDatestring nullable

When the follow-up automation last emailed this lead (replaces the Pipedrive custom field of the same name). Used to avoid following up more than once every few days.

priceLockedAtstring nullable

When this quote last had its price locked. Stamped by the blockingPrice utility each time a price is locked, so coming back and locking again restarts the fifteen days. The follow-up emails read it to state the deadline; rows that predate the field fall back to createdAt.

followUpOptOutAtstring nullable

When the traveller asked us to stop following up on this quote, from the link at the foot of every reminder. Set, the sequence sends nothing more for this quote. It is per quote, not per person: someone who asks again later still gets their own new quote followed up.

isCreatedByAdminboolean nullable
isFromOldAppboolean nullable

Legacy record imported from the old app (via Pipedrive). The travel app never renders these; the CRM tags them as "Ancien client".

subscribedAtstring nullable
cancelledAtstring nullable
isRecommendedOfferboolean nullable
pipedriveDealIdstring nullable
stripePaymentIntentIdstring nullable
stripePaymentClientSecretstring nullable
stripeRefundIdstring nullable

Set when the payment is refunded via the Refund button. Presence means the payment was refunded.

stripeCheckoutSessionIdstring nullable

Set only when the user falls back from embedded Elements to a Stripe-hosted Checkout Session. Used to resolve the final PaymentIntent when session.payment_intent is not populated at creation time.

landingPagestring nullable
referrerstring nullable
affiliateRefstring nullable

HelloSafe partner tracked-link ref (partnerCode-shortCode), captured at landing from ?ref=. Posted to Atlas at the confirmed sale for partner attribution.

awinAwcstring nullable

Awin click checksum, captured at landing from ?awc= or recovered server-side from the Awin MasterTag cookie. Sent to Awin (advertiser 128757) via S2S at the confirmed sale, and declined via the Awin API on refund.

source'google-ads' | 'bing-ads' | 'ai' | 'ai-app' | 'hellopage' | 'social' | 'atlas' | 'awin' | 'referral' | 'seo' | 'direct' nullable

Acquisition channel, derived on every write from the affiliate fields and the landing URL (see deriveSubscriptionSource). Recomputed until the sale is confirmed, then frozen. Read-only: correct the landing page or the affiliate ref, not this. Exception: a quote created by the HelloSafe app inside ChatGPT / Claude is stated as "HelloSafe app" by the app itself and kept.

sourceDetailstring nullable

The granular value behind Source: partner code (Atlas), campaign (Ads), referrer param (Referral), landing path (SEO/Direct).

clickPagestring nullable
errorstring nullable
deletedAtstring nullable

Response

Subscription object

messagestring required

Changes

No recorded changes to this operation across all 1 revision of this API.