Skip to main content
This guide helps you move a Dropbox Sign embedded signing integration to Formable. You keep the same product shape (create a request, mint a URL, embed it) while swapping endpoints, auth, and how you open the signing UI. If you also embed template setup in your product, migrate that first with Dropbox Sign → Embedded templates. Signing always starts from a prepared Formable template.
New to Formable? Complete the Embedded signing walkthrough first, then use this page as a translation layer from Dropbox Sign terms and calls.
Prefer a white-glove migration? Email matt@formabledocs.com and we’ll handle moving your Dropbox Sign integration to the Formable API.

What you’re moving

In Dropbox Sign you typically:
  1. Create an embedded signature request (create_embedded or create_embedded_with_template)
  2. Fetch a per-signer sign_url with each signature_id
  3. Open it with hellosign-embedded
  4. React to callbacks such as signature_request_all_signed, then download files
In Formable you:
  1. Upload and prepare a template (once, then reuse)
  2. Create an embedded signature request from that templateId with a signers array (each signer has email, name, and role)
  3. Mint a signingUrl from each signer’s recipientSignatureId and load it in a plain iframe
  4. Handle document_completed (webhook or poll), then download the signed PDF
The journey is familiar: backend creates the send, backend mints a short-lived URL, frontend embeds it. The main mental shifts are template-first sending, Bearer API keys, and no Dropbox Sign client library.
1

Get a Formable API key

Create an organization and key in Settings. See Authentication.
2

Migrate templates

Recreate documents and fields in Formable. If you use embedded templates today, follow Embedded templates migration.
3

Swap create + signing URL calls

Replace create_embedded* and /embedded/sign_url/{signature_id} with POST /v1/signature-requests/embedded and POST /v1/recipient-signatures/{id}/url.
4

Replace hellosign-embedded with an iframe

Pass only the signingUrl from your backend to the browser.
5

Point webhooks at Formable

Register a URL in Settings. See Webhooks.

What’s similar

Much of the Dropbox Sign model still maps cleanly:
  • You still create a signature request on the server, then open a short-lived URL in the browser.
  • Templates remain the reusable document definition. One template powers many sends.
  • test_mode / testMode keeps integration traffic out of billing. Test mode documents are watermarked and are not legally binding.
  • You still download a completed PDF after everyone has signed.
  • Signing URLs are meant to be generated just in time, not stored long-term. Dropbox Sign sign_url values last about 60 minutes and same with Formable signingUrl.
Migrating from Dropbox Sign to Formable is almost a 1 to 1 mapping.

What’s different

Plan for these shifts early so you don’t recreate Dropbox Sign patterns that Formable doesn’t use: Formable is intentionally template-first. If your Dropbox Sign code uploads PDFs on every create_embedded, move that upload into a one-time (or occasional) template create/edit step, then send with templateId.

Concept map

Endpoint map

Auth

Dropbox Sign typically uses HTTP Basic:
Formable uses Bearer tokens that start with fmbl_:
Create the key in Settings and call the API only from your backend. Full details: Authentication.

Migrate the flow

1. Create the signature request

Dropbox Sign (create_embedded_with_template):
Formable:
Response
Pass a signers array on every create. Each signer needs email, name, and role (matching template field roles). sender is optional and defaults to the org owner. Use fields: [{ fieldId, value }] for prefills (field IDs come from the template editor). Save each signer’s recipientSignatureId to mint their signing URL.

2. Generate the signing URL

Dropbox Sign — per-signer signature_id:
Formable — per-signer recipientSignatureId:
Response
Generate the URL just before the signer is ready. Formable URLs expire after one hour. Creating a URL for an already completed request returns 409.

3. Embed on the client

Dropbox Sign:
Formable — plain iframe + postMessage (no SDK, no client_id, no skipDomainVerification):
Mint the URL on your backend and pass only the URL to the browser. Never call Formable with your API key from client-side code. See Embedded signing for the full event list.

4. Detect completion and download the PDF

Use onSigningComplete to update the client immediately. Prefer the document_completed webhook (or poll signature request status until Completed) before downloading. You can also read the event stream.
Response
Download that presigned URL promptly. Requesting it before signing finishes returns 409. Webhook verification differs from Dropbox Sign’s event_hash. Formable signs the raw body with HMAC-SHA256 and sends the digest in Content-Sha256. See Verifying webhooks and Webhooks overview.

Differences to plan for

Dropbox Sign can attach files on create_embedded. Formable expects a prepared template first. Upload once, place fields, then send with templateId.
Load signingUrl in an iframe. Listen for onSigningComplete / onSigningError instead of Dropbox Sign client events such as sign or finish. Confirm completion with webhooks or status polling before downloading the PDF.
Dropbox Sign issues a sign_url per signature_id. Formable does the same: use each signer’s recipientSignatureId from the create response with create signing URL.
Dropbox Sign signers[].role maps to Formable signers[].role. Assign matching roles to required fields in the template editor, then pass the same role names when you create the embedded signature request.

Checklist

1

Create a Formable API key

In Settings. Store it as a server secret.
2

Prepare templates

Recreate documents and fields — or migrate the embedded template flow separately.
3

Swap create + sign URL calls

Replace create_embedded* and embedded/sign_url with Formable endpoints. Use signers with roles on create; mint URLs from each recipientSignatureId.
4

Replace hellosign-embedded with an iframe

Pass only the signingUrl from your backend.
5

Point webhooks at Formable

Handle document_completed / document_viewed and verify Content-Sha256.

Next steps

Embedded templates migration

Map create_embedded_draft and edit_url to Formable.

Non-embedded signing migration

Map send / send_with_template to Formable email delivery.

Embedded signing walkthrough

Full Formable signing walkthrough.

Webhooks

Register endpoints and understand delivery.