Link a visitor to your own user id or email
POST /v1/analytics/identify
Call it from your server after a signup or login, with the visitor id from the nv_vid cookie your site received (the part before the dot). Body: { "visitor_id"?: string, "user_id"?: string, "email"?: string, "first_touch"?: { referrer?, utm_source?, utm_medium?, utm_campaign?, landing_path? }, "source"?: string, "details"?: object, "consents"?: object }, at least one of user_id and email. Without visitor_id (a person known only to your server, such as an account made in an app or an import) the person is still recorded as a contact, reachable by notifications and Contacts filters, with no visits until a later call carries their id. The email is kept on the person’s contact and as a SHA-256 of its normalised form, for matching. It lets a later Stripe payment by that user be traced to the visitor’s first visit. source is a short tag you choose for where the person came in ("ios-app", "sales-call"), shown as the contact’s source when the visit carries no referrer or UTM tag; nothing to create first, and the first one named is kept. details and consents go on the person’s contact (see Contacts). With an email they reach that person; with only a user_id they reach the person identified earlier with that user id and an email, and are dropped when there is none. At most 20 details and consents together in one call. Details and consents need a person with an email: they are kept against the normalised email, and are deleted when the person’s last source row (waitlist signup, subscriber, feedback, Stripe customer, identify) is deleted. In the browser, nordva('identify', { user_id, email, source, details, consents }) does the same once the visit may carry ids, and a form with data-nordva-identify sends fields marked data-nordva-detail and ticked checkboxes marked data-nordva-consent.
Auth: Secret key only.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”object
object
Details about the person, name to value. A name is lowercase letters, digits and _, starting with a letter, up to 40 characters (stage, company_size). A value is text, a number or true/false, stored as text, up to 200 characters; null removes the detail. A person holds at most 50 details: a new one beyond that is skipped, an existing one is always updated.
object
Consents, purpose to true (granted) or false (withdrawn), such as { "email_marketing": true }. A purpose follows the same naming rule as a detail. waitlist and changelog are recorded by Launch itself (on the waitlist and not unsubscribed; subscribed to the changelog) and are refused here. Record only what the person actually agreed to: Launch stores the answer, it cannot know what your form said.
object
Responses
Section titled “ Responses ”Identified
Error envelope. See error.code for the discriminator.
object
object
object
Error envelope. See error.code for the discriminator.