App integration · All integrations

Connect Google Drive to Formfy

Every signed consent, intake, or liability waiver that comes through your practice or agency eventually needs to land somewhere safe — not buried in an inbox or downloaded manually each time a client signs. Teams share signed documents with colleagues, store them in client folders, and retrieve them months later for audits or renewals. Manually downloading each PDF and dragging it into the right Google Drive folder is fine for ten forms; it becomes a real bottleneck at a hundred.

Formfy publishes a form.signed webhook and a dedicated signed-PDF endpoint. Subscribe once, and every signed document flows straight into the Google Drive folder you specify — no manual downloads, no inbox clutter, no missed uploads.

The workflow at a glance

Trigger

A client signs a Formfy consent, intake, or waiver form

Action

Webhook fires → fetch signed PDF from Formfy → upload to the designated Google Drive folder

Result

Signed PDF lands in Drive automatically, organized and shareable with your team

Step-by-step: connect Google Drive to Formfy

Subscribe to Formfy's form.signed webhook, fetch the signed PDF, and upload it to Google Drive automatically whenever a client signs.

  1. Generate a Formfy API key

    Open the Formfy dashboard, navigate to Settings → API Keys, and click Create key. Save the fk_live_… token somewhere secure — Formfy shows it once. Use a fk_test_… key while wiring up the integration so you do not consume live credits during development. Both key types work against all API endpoints.

  2. Create the destination folder in Google Drive

    In Google Drive, create a top-level folder named Signed Documents — or per-client subfolders if you route by client name. Copy the folder ID from the Drive URL. You will pass this ID in the parents array when uploading via the Drive API. Consistent folder structure now makes retrieval straightforward six months later.

  3. Subscribe to the form.signed webhook event

    Before adding a subscription, run GET /api/v1/webhooks to confirm you are not duplicating an active form.signed listener. Then POST /api/v1/webhooks with your server's callback URL and event_types: ["form.signed"]. Save the signing secret from the response — you need it to verify every delivery.

    POST/api/v1/webhooksSee in the OpenAPI spec →

  4. Verify the webhook signature and extract the form ID

    When Formfy fires the form.signed event, the payload includes the form id, signer email, and signed_at timestamp. Compute HMAC-SHA256(secret, raw_body) and compare it to the X-Formfy-Signature header. Reject any payload where they do not match. Extract the form id — you will pass it to the signed-PDF endpoint in the next step.

  5. Fetch the signed PDF from Formfy

    Call GET /api/v1/forms/{id}/signed-pdf with your Bearer token. Formfy returns a short-lived download token. Exchange that token at GET /api/v1/files/pdf/{token} to stream the binary PDF. Write the bytes to a buffer immediately — the token expires within minutes, so do not defer the download to a background job.

    GET/api/v1/forms/{id}/signed-pdfSee in the OpenAPI spec →

  6. Upload the PDF to your Google Drive folder

    Post a multipart upload to the Drive API with a metadata part (name, mimeType: application/pdf, parents: [folderId]) and the PDF buffer as the media part. Use the signer email and signed_at date in the filename so the file is easy to find. The Drive API returns a file ID you can log or store for later reference.

  7. Rotate the webhook secret on schedule

    Quarterly, or whenever you suspect exposure, POST /api/v1/webhooks/{id}/rotate-secret to receive a fresh HMAC key. Update the secret in your handler's environment variable immediately. Formfy continues sending deliveries, but they will fail signature verification until both sides use the new secret — roll within one maintenance window to avoid dropped uploads.

    POST/api/v1/webhooks/{id}/rotate-secretSee in the OpenAPI spec →

Subscribe to form.signed and fetch the signed PDF

Subscribe your handler to the form.signed event, then use the form ID from the webhook payload to retrieve the signed PDF token and download the binary for upload to Google Drive.

# 1. Subscribe to form.signed events
curl -X POST https://formfy.ai/api/v1/webhooks \
  -H "Authorization: Bearer fk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "target_url": "https://your-server.example.com/webhooks/formfy",
    "event_types": ["form.signed"]
  }'

# 2. When the webhook fires, fetch the download token
curl https://formfy.ai/api/v1/forms/FORM_ID/signed-pdf \
  -H "Authorization: Bearer fk_live_YOUR_KEY"
# Returns: { "token": "pdf_tok_…", "expires_at": "…" }

# 3. Download the signed PDF binary
curl https://formfy.ai/api/v1/files/pdf/PDF_TOKEN -o signed-form.pdf

Frequently asked questions

Can I save every signed Formfy form to Google Drive automatically?

Yes. Subscribe your handler to the form.signed webhook and the trigger fires for every form signed in your Formfy account — consents, waivers, intake forms, and more. Each delivery includes the form ID. Fetch the signed PDF via GET /api/v1/forms/{id}/signed-pdf and upload it to the Drive folder of your choice. One webhook subscription covers your entire account; filter by form ID or signer email inside your handler if you need to route different form types to different folders.

What PDF format does Formfy produce for Google Drive storage?

Formfy produces a flattened, signature-embedded PDF. The signer's drawn or typed signature is baked directly into the document — there is no separate signature layer that can be stripped. The file opens in Google Drive's native viewer without plugins and can be shared with clients or stored for long-term archival. Fetch it via GET /api/v1/forms/{id}/signed-pdf; the endpoint returns a short-lived download token you exchange at GET /api/v1/files/pdf/{token} for the raw binary.

Do I need to write code, or can I use a no-code tool?

Both paths work. If you prefer no-code, connect Formfy to Google Drive via Zapier or Make: subscribe a Catch Hook trigger to the form.signed event, add a Webhooks GET action to download the PDF from Formfy, then use a Google Drive Upload File step. If you prefer code, the Formfy REST API and Google Drive API v3 multipart upload handle the full flow in under 50 lines of Node.js or Python — the seven steps above map directly to that implementation.

How do I route signed PDFs into different Drive folders by form type?

Add a folder-routing map to your webhook handler. When the form.signed payload arrives, inspect the form_id to determine the form type, then look up the corresponding Drive folder ID in your map. Pass that folder ID in the parents array when calling the Drive API. You can also call GET /api/v1/forms/{id} to fetch the form title or template name and use that as a routing key — useful when your team adds new form types without touching the routing map.

How should I name the uploaded PDF in Google Drive?

You control the filename in the Drive API metadata part. A practical convention is {form_title}_{signer_name}_{date}.pdf — all three values arrive in the form.signed webhook payload, so no extra API calls are needed. If a form supports multiple signers, include the signer email or index to prevent filename collisions when two clients sign the same template on the same day inside a shared Drive folder.

What happens if the Google Drive upload fails after a form is signed?

Formfy retries webhook deliveries with exponential backoff for up to 24 hours if your endpoint returns a non-2xx status. Build an idempotent handler: record the form ID on first receipt, skip duplicate deliveries, and re-trigger failed uploads from the Webhook Deliveries log in the Formfy dashboard. The signed PDF stays accessible via the API — call GET /api/v1/forms/{id}/signed-pdf any time you have the form ID and a valid Bearer token.

Is the signed PDF ready immediately when the form.signed webhook fires?

Yes. Formfy generates the signed PDF synchronously as part of the signing flow, so by the time the webhook payload reaches your handler, GET /api/v1/forms/{id}/signed-pdf is ready to return the download token. The token is short-lived, so fetch the binary and upload to Drive within the same request cycle. If you need to retry, request a fresh token rather than attempting to reuse an expired one.

Can I share the Drive file with the signer automatically after upload?

Yes, via the Google Drive permissions API. After uploading, call the Drive files.permissions.create endpoint with the signer's email (from the form.signed payload) as the emailAddress and role: reader. The signer receives a Drive share notification and can open the signed document directly. Alternatively, Formfy can deliver the signed PDF to the signer by email as part of the form flow — check the delivery settings on your form in the Formfy dashboard.

Ready to wire Google Drive into Formfy?

Spin up an API key, run your first webhook, and route signed forms wherever your team already works.