Integrate Gandi with Webflow | Quick connect guide

Webflow hosting covers publishing, SSL, and CDN delivery. Domain registration, authoritative nameservers, and email hosting sit outside that scope. A registrar and DNS host elsewhere hold the records that point a custom domain at Webflow. Gandi is one of those registrars, and its LiveDNS zone is where those records live.

With a Gandi domain on LiveDNS, you add the required Webflow records, and your site answers on your own domain. Gandi Mail can remain active through the switch. SSL certificates provision automatically once the records resolve. Developers can script the same records with the Gandi LiveDNS API and trigger publishes with the Webflow Data API.

This setup fits client work where email continuity matters. It also supports agency domain portfolios and European founders using existing .fr or .eu registrations.

How to integrate Gandi with Webflow

What is Gandi? Gandi is a French domain registrar that has been selling domains since December 2000. In February 2023 it joined Total Webhosting Solutions to create Your.Online, the European group it now sits inside, and it kept its own name and brand through that change. It sells domains across more than 800 extensions, runs the LiveDNS name service included with every registration, and sells Gandi Mail mailboxes and SSL certificates. Its v5 REST API covers domains, LiveDNS, email, and certificates.

Teams pair the two when a domain already lives at Gandi and the site moves to Webflow, or when an agency registers new client domains at Gandi and builds the sites in Webflow. Gandi Mail is usually the main concern during the switch. Gandi publishes no Webflow Marketplace app, and Zapier, n8n, and IFTTT each return nothing for Gandi in their own app directories. Every path uses Gandi's DNS interface or the REST APIs.

The Gandi-Webflow integration supports three approaches:

Most implementations combine two or more of these methods depending on the complexity of the setup.

Add Webflow DNS records in Gandi LiveDNS

A paid Site plan is required because the free Starter Site plan publishes only to the .webflow.io subdomain. The required Webflow records can be added in Gandi LiveDNS without code. Copy the values shown on your own Site settings > Publishing > Production page. Sites created before April 21, 2025 may still need two A records, and that page shows the exact set for your site.

If your domain still sits on Gandi's Classic DNS nameservers (a, b, or c.dns.gandi.net), Gandi is migrating those domains automatically, free of charge and with no action needed from most owners, after its August 2026 end-of-life announcement. Everything below assumes LiveDNS.

Connect the root domain and www subdomain

Ownership verification uses a TXT record alongside the root A record and www CNAME. Gandi's DNS records guide covers both the table mode and the text mode used below.

To connect the root domain and www:

  1. In Webflow, go to Site settings > Publishing > Production and click Add a custom domain > Manually add domain.
  2. Copy the A, CNAME, and TXT values shown for your site.
  3. In Gandi, click Domain in the left menu, open your domain, and click the DNS Records tab.
  4. Click Save a backup in the Backup section so you can roll the zone back.
  5. Remove apex A values that are not listed in Site settings > Publishing > Production, and delete any CNAME on www that points at a previous host. Retain every A value Webflow shows for your site.
  6. Click the green Add button, choose A, enter @ as the name, and add the value or values shown by Webflow. Most current sites use only 198.202.211.1, but some older sites may display two required A values.
  7. Click Add, choose CNAME, enter www as the name and cdn.webflow.com. as the value, and include the trailing dot, which Gandi warns is required for a CNAME value to work.
  8. Click Add, choose TXT, enter _webflow as the name, and paste the one-time-verification= string from Webflow.
  9. Back in Webflow, click Check status under each domain.
  10. Click Make default next to the www domain.

Setting www as the default avoids the redirect loops a root default domain can trigger when DNS is not fully in place. LiveDNS uses @ for the apex and the label before the dot for subdomains. Enter www rather than www.yourdomain.com. Full propagation across all regions can take up to 48 hours. Skip the Gandi ALIAS record type at the apex; it requires that no A record exist for @ and it breaks DNSSEC, and the standard setup uses a plain A record.

Connect a subdomain only

The root domain can remain on its current host while a subdomain such as blog.example.com routes to Webflow. The subdomain guide covers the Webflow steps.

To connect a subdomain:

  1. In Site settings > Publishing > Production, add blog.example.com as a custom domain and copy the values shown.
  2. In Gandi's DNS Records tab, add a CNAME with blog as the name and the CNAME value shown by Webflow.
  3. Add the TXT record named _webflow with the verification string from Webflow.
  4. Click Check status in Webflow once the records resolve.

Gandi notes that a CNAME cannot sit on the apex @ and that it overrides every other record on the same subdomain, so blog must carry no MX or TXT records of its own.

Keep Gandi Mail records in the same zone

Gandi Mail delivery depends on its MX records. Gandi's FAQ answer confirms that Gandi Mail works with any DNS host when the Gandi MX records are present.

Confirm these records stay in your LiveDNS zone:

The MX values need the trailing period. Only one SPF TXT record may exist on a domain, so merge Gandi's include with any other sender's into a single record. On LiveDNS domains you can skip the manual DKIM CNAMEs and instead go to Domain > Email > Security & Settings > Manage, switch on DKIM Signature, and click Update, per Gandi's DKIM guide. Form notification emails from your Webflow site are sent from one of three Webflow no-reply addresses, not from your domain, so add those senders to your safe sender list rather than reaching for your own mail records.

Redirect a secondary domain with Gandi Web Forwarding

An old Gandi domain such as olddomain.com can send visitors to https://www.newdomain.com. Web Forwarding is free, and the domain must use Gandi LiveDNS. Use the DNS method above for the domain that should resolve directly to Webflow hosting.

To create a forward:

  1. In Gandi, open DOMAIN > Web Forwarding for the secondary domain.
  2. Click Create.
  3. Enter the source hostname and the full Webflow URL as the destination.
  4. Pick a forwarding type and save.

The destination's intended lifetime and HTTPS requirements determine the setting described in the Web Forwarding guide:

New rules go live roughly 20 minutes after creation. Webflow handles HTTP-to-HTTPS redirects on the main hosted domain. Gandi states that Web Forwarding cannot perform this redirect.

Build with the Webflow and Gandi APIs

Every call must run from a server or serverless function, because a PAT in front-end JavaScript on your Webflow pages is readable by every visitor. Agencies and SaaS teams can use this path to register domains, write DNS records, create mailboxes, and publish sites for many clients. Both APIs authenticate with an Authorization: Bearer <token> header. On the Gandi side that token is a Personal Access Token scoped to one organization, and Gandi marks the older Apikey scheme deprecated in favor of PATs, which carry finer permissions. On the Webflow side you use a site token or an OAuth token.

Both platforms expose the routes this work runs on:

Two gaps shape every design. Gandi-side state requires polling because the v5 API documents no outbound webhooks. The Data API documents a read route for custom domains, Get Custom Domains, and no create route, so the domain itself is still attached under Site settings > Publishing > Production. The Webflow v1 API was deprecated on March 31, 2025, per Webflow's v1 deprecation notice, so target v2 only.

Create Webflow DNS records with the LiveDNS API

A PAT's validity duration is fixed when you create it at 7, 30, 60, 90 days or 1 year, and Gandi states an expired token cannot be used again, so build rotation into the job. A script can then reproduce the manual setup for every domain in a portfolio.

To write the records:

  1. Create a PAT in Gandi with LiveDNS permissions for the organization that owns the domain.

  2. Create the A record:

    POST /v5/livedns/domains/{fqdn}/records
    Authorization: Bearer <PAT>
    Content-Type: application/json
    

{ "items": [
{
"rrset_name": "@",
"rrset_type": "A",
"rrset_values": [""],
"rrset_ttl": 300
}
] }


3. Send a second request to the same endpoint for the CNAME:

```json
{
  "items": [\
    {\
      "rrset_name": "www",\
      "rrset_type": "CNAME",\
      "rrset_values": ["<CNAME_value_from_Webflow>"],\
      "rrset_ttl": 300\
    }\
  ]
}
  1. Add the _webflow TXT record the same way, using the verification value from Site settings.
  2. Verify with GET /v5/livedns/domains/{fqdn}/records; include Accept: text/plain if you want zone-file output.

To replace an existing record set, POST /v5/livedns/domains/{fqdn}/records/{rrset_name}/{rrset_type} overwrites it. To add or remove single values without a full rewrite, PATCH the same path with add_rrset_values and remove_rrset_values arrays, an operation Gandi added on 2025-03-20. TTLs accept 300 to 2,592,000 seconds.

Publish to a Gandi domain with the Webflow Data API

The domain must first be attached in the UI and pass Check status. The Data API can then publish to it on demand, which lets a deployment job push a site live right after its DNS records land. The Publish Site endpoint needs the sites:write scope and is rate limited to one successful publish queued per minute.

To publish:

  1. Add the Gandi domain in Site settings > Publishing > Production and confirm it passes Check status.

  2. Call GET /v2/sites/{site_id}/custom_domains to fetch each domain's id, url, and lastPublished.

  3. Publish to the domain:

    POST /v2/sites/{site_id}/publish
    Authorization: Bearer <token>
    Content-Type: application/json
    

{ "customDomains": [""], "publishToWebflowSubdomain": false }


A `202` response means the publish is queued. Add an optional `pageId` to publish a single page instead of the whole site. Registering a `site_publish` webhook with `POST /v2/sites/{site_id}/webhooks` gives your backend the `domains` and `publishedOn` fields after each publish, a natural moment to re-read the LiveDNS zone and confirm the apex still matches the values in Site settings.

#### **Register client domains and mailboxes for agency workflows**

A reseller organization's PAT and `sharing_id` route billing while the agency provisions a client's domain in one job. The Domain API accepts `currency` values of `EUR`, `USD`, `GBP`, `TWD`, and `CNY`, and the reseller organization needs billing permissions.

To provision a client domain end to end:

1. Create a PAT scoped to the reseller organization with billing permissions.
2. Check availability with `GET /v5/domain/check?name=example.com&sharing_id=<id>&currency=EUR`.
3. Register with `POST /v5/domain/domains?sharing_id=<id>` and include `fqdn` plus an `owner` object with `country`, `email`, `family`, `given`, `streetaddr`, and `type`. Optional fields are `duration` (1 to 10), `currency`, and `grid`.
4. Poll `GET /v5/domain/domains/{domain}` until the registration `status` settles.
5. Write the required Webflow records as in the LiveDNS section, then add the MX records in the same call style:

```json
{
  "items": [\
    {\
      "rrset_name": "@",\
      "rrset_type": "MX",\
      "rrset_values": ["10 spool.mail.gandi.net.", "50 fb.mail.gandi.net."],\
      "rrset_ttl": 10800\
    }\
  ]
}
  1. Create the mailbox with POST /v5/email/mailboxes/{domain}, sending login, mailbox_type (standard, premium, standard_2023, or premium_2023), and a password of 8 to 200 characters with at least one uppercase letter, three numbers, and one special character.
  2. Attach the domain in the Webflow UI and publish with the Data API as above.

The domain needs at least one free mail slot before step 6 succeeds, per the same Email API reference. Gandi's separate Mailbox API rejects ApiKey authentication outright and accepts only a PAT.

Track domain expiry in a Webflow CMS collection

The dates.registry_ends_at field from the Domain API supplies each managed domain's renewal date. A scheduled job handles the required polling and writes the results into a CMS collection that a Collection List renders.

To build the sync:

  1. On a schedule, call GET /v5/domain/domains and then GET /v5/domain/domains/{domain} for each fqdn, and read dates.registry_ends_at and status.
  2. Create or update items with POST /v2/collections/{collection_id}/items or PATCH /v2/collections/{collection_id}/items; pass fieldData with at least name and slug.
  3. Push the items live with POST /v2/collections/{collection_id}/items/publish.

List routes on the Gandi side support page and per_page parameters, and since 2026-07-27 the Total-Count header returns the filtered count rather than the total, a change Gandi records in the same changelog. The same loop can read GET /v5/certificate/issued-certs for dates.ends_at if clients also buy Gandi certificates for non-Webflow properties.

What you can build with the Gandi Webflow integration

A Webflow migration can leave the registrar and DNS zone unchanged while the existing inbox remains active.

Each of these leaves the registrar and the mail records where they are, and moves only the records that decide where the site answers. For the CMS half of the last two, read our guide to the Webflow CMS API.

Frequently asked questions