A deep link is a one-time URL that opens the Flume app with the user signed in. It lands on one of their searches, a product from that search, or an instant quote.
When should you create one?
Section titled “When should you create one?”Create the link from your backend at the moment the user clicks. Then open it at once.
- It works once.
- It expires 7 days after you create it.
- Flume never stores the URL. Do not store it either.
What can a link open?
Section titled “What can a link open?”| You send | The link opens |
|---|---|
search_session_uuid | That search's results |
search_session_uuid and sku_uuid | That product. It must be a result of that search |
search_session_uuid, sku_uuid and quote_uuid | That instant quote. It must be READY |
search_session_uuid is always required.
What do the optional fields do?
Section titled “What do the optional fields do?”| Field | Use |
|---|---|
target | What the link opens: product, search or quote. See What does the link open? |
utm_content | Names the button that asked, for your own reporting. Max 64 characters |
redirect_uri | Where Flume sends the user back to. Must be https, on a redirect host agreed with Flume |
What does the link open?
Section titled “What does the link open?”Without target, the link opens the most specific id you send.
| You send | The link opens |
|---|---|
quote_uuid | The instant quote |
sku_uuid, no quote_uuid | The product |
| Neither | The search |
With target, the link opens what you name, whatever else you send.
target | Needs | The link opens |
|---|---|---|
quote | quote_uuid | The instant quote |
product | sku_uuid | The product, also when you send a quote_uuid |
search | Nothing more | The search |
- A
targetwithout the id it needs returns422VALIDATION_FAILED.fieldnames the missing id. - Flume checks every id you send, whatever
targetsays. Asku_uuidmust be a result of the search, and aquote_uuidmust be the user's ownREADYquote for that product. A quote that is notREADYreturns422QUOTE_NOT_READY; a quote for another product returns422VALIDATION_FAILEDwithfield: quote_uuid.
How does idempotency apply?
Section titled “How does idempotency apply?”Idempotency-Key is optional on POST /deep-links.
- A replay of the same key returns
url: null. A link is a sign-in grant, so Flume does not repeat it. - To get a new link, call again with a new key.
What about the iframe's own button?
Section titled “What about the iframe's own button?”Inside the iframe, the user can open the Flume app directly. The iframe creates the link itself. You do nothing.
Your iframe tag needs allow-popups and allow-popups-to-escape-sandbox for this. See Set up your page.
What is the durable link?
Section titled “What is the durable link?”product_url in the save payload is a plain link to the product.
| Deep link | product_url | |
|---|---|---|
| Signs the user in | Yes | No |
| Uses | One | Unlimited |
| Expires | After 7 days | Never |
| Store it | No | Yes |
What does the user see when a link is spent?
Section titled “What does the user see when a link is spent?”The Flume app shows "This link has expired or was already used". Create a new link on the next click.
Limits
Section titled “Limits”- 2,000 deep links per partner per UTC day. Over it:
429RATE_LIMITED. - The host of
urldepends on the environment. Do not parse or rebuild the URL.