> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Framer Entitlement

> Give paying customers the remix link of your Framer template, so they can remix it into their own Framer account after purchase.

<Info>
  The Framer entitlement gives paying customers the remix link of a Framer template. You register the template's remix link in Dodo Payments and attach the entitlement to a product. Customers get the link in the Customer Portal and use it to remix the template into their own Framer account.
</Info>

## What Gets Delivered

* The remix link of the Framer template you registered. Every customer who buys the product receives the same link.
* The customer opens the link from the Customer Portal and remixes the template into their own Framer workspace.
* On cancellation or refund, the Customer Portal stops showing the link. The link itself keeps working in Framer, so anyone who saved it can still remix the template.

Common uses include paid Framer landing-page templates, portfolio kits, and component libraries.

## Connect Framer

Framer is connected implicitly the first time you create a template entitlement. There's no separate OAuth step.

<Steps>
  <Step title="Open Entitlements">
    In the Dodo Payments dashboard, go to **Entitlements** and click **+**.
  </Step>

  <Step title="Pick Framer">
    Choose **Framer Template** as the integration.
  </Step>

  <Step title="Grab the Remix Link from Framer">
    Open your Framer project. From the top-left menu, go to **File → Copy Remix Link**. This copies a public remix URL that lets anyone clone the project into their own Framer account. Dodo Payments shares this link with paying customers.

    <Frame caption="Framer File menu: click Copy Remix Link to copy the template's remix URL.">
      <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/framer/copy-remix-link.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=a0e1e4d5c9cc0a88ca5dbf059a4d2329" alt="Framer File menu with Copy Remix Link option highlighted" style={{ maxHeight: '500px', width: 'auto' }} width="906" height="1488" data-path="images/entitlements/framer/copy-remix-link.png" />
    </Frame>
  </Step>

  <Step title="Add the Template and Create the Entitlement">
    Back in the Dodo Payments dashboard, select the template under **Template**. To register a new template, click **+ Create new template**, enter a **Template name**, paste the link you copied into **Remix link** (it must be a `framer.com` URL), and click **Create template**. Enter a **Name** for the entitlement and click **Create Entitlement**.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/framer/create.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=f3b5bfdb1092047e06f4eeba03d7bddf" alt="Framer template entitlement form with template picker and name field" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1130" data-path="images/entitlements/framer/create.png" />
    </Frame>

    Dodo Payments stores the registered template's ID as `framer_template_id` in the entitlement's `integration_config`, so you can reference it programmatically.
  </Step>
</Steps>

## Customer Flow

1. The customer completes checkout.
2. Dodo Payments creates a `Pending` grant and attaches the template's remix link to it.
3. The grant moves to `Delivered` once the remix link is attached. The payment confirmation email links to the Customer Portal, where the customer finds the link on the entitlement.
4. The customer opens the link, signs in to Framer, and remixes the template.
5. On revocation, the Customer Portal stops showing the link. Copies already remixed into the customer's Framer account remain, since Framer doesn't expose a way to revoke them.

## Required Configuration

| Field | Required | Description |
| - | - | - |
| `framer_template_id` | Yes | The ID (a UUID) of the template you registered in the dashboard. |

## Create via API

<CodeGroup>
  ```typescript TypeScript expandable theme={null}
  import DodoPayments from 'dodopayments';

  const client = new DodoPayments({
    bearerToken: process.env['DODO_PAYMENTS_API_KEY'],
    environment: 'test_mode',
  });

  const entitlement = await client.entitlements.create({
    name: 'Portfolio Kit',
    integration_type: 'framer',
    integration_config: {
      framer_template_id: '3f2b8c1e-7d4a-4e9b-a6c5-1d2e3f4a5b6c',
    },
  });
  ```

  ```python Python expandable theme={null}
  import os
  from dodopayments import DodoPayments

  client = DodoPayments(bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"), environment="test_mode")

  entitlement = client.entitlements.create(
      name="Portfolio Kit",
      integration_type="framer",
      integration_config={"framer_template_id": "3f2b8c1e-7d4a-4e9b-a6c5-1d2e3f4a5b6c"},
  )
  ```

  ```go Go expandable theme={null}
  // client is a *dodopayments.Client, for example from
  // dodopayments.NewClient(option.WithEnvironmentTestMode()); ctx is a context.Context.
  client.Entitlements.New(ctx, dodopayments.EntitlementNewParams{
    Name:            dodopayments.F("Portfolio Kit"),
    IntegrationType: dodopayments.F(dodopayments.EntitlementIntegrationTypeFramer),
    IntegrationConfig: dodopayments.F[dodopayments.IntegrationConfigUnionParam](
      dodopayments.IntegrationConfigFramerConfigParam{
        FramerTemplateID: dodopayments.F("3f2b8c1e-7d4a-4e9b-a6c5-1d2e3f4a5b6c"),
      },
    ),
  })
  ```
</CodeGroup>

## Webhooks

See [`entitlement_grant.*` webhook events](/developer-resources/webhooks/intents/entitlement-grant). Framer grants arrive `Pending` and transition to `Delivered` once the remix link is attached to the grant.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Customer's remix link doesn't work">
    The remix link isn't single-use or tied to one customer. Every customer receives the link you registered, and can open it again from the Customer Portal while the grant is `Delivered`. If the link fails, open it yourself to confirm the remix link is still valid in Framer.
  </Accordion>

  <Accordion title="Refunded customer still has a remixed copy">
    This is expected. Framer treats a remix as the customer's own project once it's cloned. Dodo Payments stops showing the link in the Customer Portal but can't delete copies in the customer's account, and can't disable the remix link itself.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.