Reference pending — subject to change. The Droplet management endpoints used below —
POST /api/droplets (register), POST /api/droplet_installations/exchange (credential exchange), and PUT /api/droplets/{id} (update) — are not yet part of Fluid’s published, versioned API reference. The installation flow described here is stable in concept, but treat the exact paths, request bodies, and response shapes as provisional and confirm them with Fluid before you ship. The webhook registration and signature-verification steps, by contrast, use the published Webhooks API.1
Create the Droplet via API
Register your Droplet with Fluid by sending a Fluid returns a Droplet object including your Droplet’s ID. Save this — you’ll need it to manage the Droplet later.
POST request to /api/droplets. The payload defines your Droplet’s name, the URL Fluid will load in the merchant dashboard, and the webhook endpoints Fluid calls during installation and uninstallation.POST /api/droplets is reference-pending (see the note above) — the fields below are illustrative and may change.2
Implement the Install Webhook Handler
When a merchant installs your Droplet, Fluid sends a signed
POST request to your install_webhook_url. Your handler must verify the signature and then exchange the included exchange_token for long-lived credentials.3
Exchange the Token for Credentials
The The response contains two tokens you must store securely:
exchange_token included in the install webhook is single-use and expires after 10 minutes. Exchange it immediately for long-lived credentials:POST /api/droplet_installations/exchange is reference-pending (see the note above) — confirm the exact request and response shapes with Fluid.4
Store Credentials and Register Webhooks
Store the
authentication_token and webhook_verification_token in your database, keyed by shop domain or installation ID. These credentials represent one merchant’s installation — each merchant who installs your Droplet gets their own set.After storing credentials, optionally register webhooks or drop zones for the merchant with the published POST /api/company/webhooks endpoint — see the Register and handle webhooks guide for the full registration, delivery, and verification contract:5
Implement the Uninstall Handler
When a merchant uninstalls your Droplet, Fluid sends a signed webhook to your
uninstall_webhook_url. Verify the signature the same way as the install handler, then clean up the merchant’s credentials and any associated resources.6
Test Locally with ngrok
Fluid must be able to reach your webhook endpoints over HTTPS. During development, use ngrok to expose your local server:ngrok prints a public HTTPS URL such as Remember to swap back to your production URLs before submitting for Marketplace approval.
https://a1b2c3d4.ngrok.io. Update your Droplet’s install_webhook_url and uninstall_webhook_url to use this URL while testing:PUT /api/droplets/{id} is reference-pending (see the note above) — the update path and body may change.7
Submit for Marketplace Approval
Once your Droplet is working end-to-end, contact Fluid to begin the Marketplace review process. Fluid will review your Droplet’s functionality, security, and listing content before making it available to merchants.
Your Droplet will not appear in the Fluid Marketplace until it has been reviewed and approved by Fluid. Keep your
active field set to true and ensure your listing metadata in settings.marketplace_page is complete before submitting.Verifying Webhook Signatures
Every webhook Fluid sends is signed with HMAC-SHA256. Verify the signature on every incoming request to ensure it genuinely came from Fluid. Reject any request where the timestamp is more than 5 minutes old to prevent replay attacks. This is the same signing scheme documented in the Register and handle webhooks guide — Fluid computes the HMAC over<timestamp>.<raw_body> using your shared secret.
Fluid includes three headers on every webhook:
Node.js
Identifying Merchants in Your Embed
Fluid appends the Droplet installation UUID as adri query parameter to your embed_url whenever it loads the Droplet inside the merchant’s dashboard. Use this value to look up the correct authentication_token for the current merchant:
Token Scopes
When you exchange the install token, yourauthentication_token has access to the following scopes: