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

# Instagram

> Activate Permutive cohorts to Instagram for custom audience targeting via Facebook integration

export const NoBadge = () => {
  return <span style={{
    display: 'inline-block',
    padding: '0.125rem 0.5rem',
    borderRadius: '0.25rem',
    fontSize: '0.625rem',
    background: '#F7D0E2',
    color: '#1A1A1A',
    fontWeight: '500'
  }}>
      No
    </span>;
};

export const YesBadge = () => {
  return <span style={{
    display: 'inline-block',
    padding: '0.125rem 0.5rem',
    borderRadius: '0.25rem',
    fontSize: '0.625rem',
    background: '#C7E8F9',
    color: '#1A1A1A',
    fontWeight: '500'
  }}>
      Yes
    </span>;
};

export const BadgeRowCenter = ({label, children}) => {
  return <div style={{
    display: 'flex',
    justifyContent: 'space-between',
    alignItems: 'center',
    marginBottom: '0.5rem'
  }}>
      <span style={{
    fontSize: '0.625rem',
    color: '#6b7280',
    textTransform: 'uppercase',
    fontWeight: '500',
    letterSpacing: '0.05em'
  }}>
        {label}
      </span>
      {children}
    </div>;
};

export const BadgeRow = ({label, children}) => {
  return <div style={{
    display: 'flex',
    justifyContent: 'space-between',
    alignItems: 'flex-start',
    marginBottom: '0.5rem'
  }}>
      <span style={{
    fontSize: '0.625rem',
    color: '#6b7280',
    textTransform: 'uppercase',
    fontWeight: '500',
    letterSpacing: '0.05em'
  }}>
        {label}
      </span>
      {children}
    </div>;
};

export const BadgeContainer = ({children}) => {
  return <div style={{
    display: 'flex',
    gap: '0.25rem',
    flexWrap: 'wrap',
    justifyContent: 'flex-end',
    minWidth: '0',
    flex: '1'
  }}>
      {children}
    </div>;
};

export const ProductRequiredBadge = ({product}) => {
  const getBadgeStyle = product => {
    switch (product) {
      case 'Core Platform':
        return {
          background: '#CB88FC',
          color: '#1A1A1A'
        };
        --purple;
      case 'Routing':
        return {
          background: '#CB88FC',
          color: '#1A1A1A'
        };
        --purple;
      case 'Contextual':
        return {
          background: '#CB88FC',
          color: '#1A1A1A'
        };
        --purple;
      default:
        return {
          background: '#A7B3D9',
          color: '#1A1A1A'
        };
        --haze;
    }
  };
  const style = getBadgeStyle(product);
  return <span style={{
    display: 'inline-block',
    padding: '0.125rem 0.375rem',
    borderRadius: '0.25rem',
    fontSize: '0.625rem',
    background: style.background,
    color: style.color,
    fontWeight: '500'
  }}>
      {product}
    </span>;
};

export const SdkRequiredBadge = ({required}) => {
  const getBadgeStyle = required => {
    switch (required) {
      case 'Yes':
        return {
          background: '#C7E8F9',
          color: '#1A1A1A'
        };
        --blue;
      case 'No':
        return {
          background: '#F7D0E2',
          color: '#1A1A1A'
        };
        --pink;
      default:
        return {
          background: '#A7B3D9',
          color: '#1A1A1A'
        };
        --haze;
    }
  };
  const style = getBadgeStyle(required);
  return <span style={{
    display: 'inline-block',
    padding: '0.125rem 0.375rem',
    borderRadius: '0.25rem',
    fontSize: '0.625rem',
    background: style.background,
    color: style.color,
    fontWeight: '500'
  }}>
      {required}
    </span>;
};

export const CapabilityBadge = ({capability}) => {
  const getBadgeStyle = capability => {
    switch (capability) {
      case 'Event Collection':
        return {
          background: '#EFDFC8',
          color: '#1A1A1A'
        };
        --clay;
      case 'Cohort Activation':
        return {
          background: '#EFDFC8',
          color: '#1A1A1A'
        };
        --clay;
      case 'Campaign Optimization':
        return {
          background: '#EFDFC8',
          color: '#1A1A1A'
        };
        --clay;
      case 'Identity Signal':
        return {
          background: '#EFDFC8',
          color: '#1A1A1A'
        };
        --clay;
      case 'Contextual Signal':
        return {
          background: '#EFDFC8',
          color: '#1A1A1A'
        };
        --clay;
      case 'Connectivity':
        return {
          background: '#EFDFC8',
          color: '#1A1A1A'
        };
        --clay;
      case 'Routing':
        return {
          background: '#EFDFC8',
          color: '#1A1A1A'
        };
        --clay;
      case 'Data Collaboration':
        return {
          background: '#EFDFC8',
          color: '#1A1A1A'
        };
        --clay;
      default:
        return {
          background: '#A7B3D9',
          color: '#1A1A1A'
        };
        --haze;
    }
  };
  const style = getBadgeStyle(capability);
  return <span style={{
    display: 'inline-block',
    padding: '0.125rem 0.375rem',
    borderRadius: '0.25rem',
    fontSize: '0.625rem',
    background: style.background,
    color: style.color,
    fontWeight: '500',
    whiteSpace: 'nowrap'
  }}>
      {capability}
    </span>;
};

export const EnvironmentBadge = ({environment}) => {
  const getBadgeStyle = environment => {
    switch (environment) {
      case 'Web':
        return {
          background: '#F9C1A8',
          color: '#1A1A1A'
        };
        --peach;
      case 'iOS':
        return {
          background: '#F9C1A8',
          color: '#1A1A1A'
        };
        --peach;
      case 'Android':
        return {
          background: '#F9C1A8',
          color: '#1A1A1A'
        };
        --peach;
      case 'CTV':
        return {
          background: '#F9C1A8',
          color: '#1A1A1A'
        };
        --peach;
      case 'API Direct':
        return {
          background: '#F9C1A8',
          color: '#1A1A1A'
        };
        --peach;
      default:
        return {
          background: '#A7B3D9',
          color: '#1A1A1A'
        };
        --haze;
    }
  };
  const style = getBadgeStyle(environment);
  return <span style={{
    display: 'inline-block',
    padding: '0.125rem 0.375rem',
    borderRadius: '0.25rem',
    fontSize: '0.625rem',
    background: style.background,
    color: style.color,
    fontWeight: '500',
    whiteSpace: 'nowrap'
  }}>
      {environment}
    </span>;
};

export const DirectionBadge = ({direction}) => {
  const getBadgeStyle = direction => {
    switch (direction) {
      case 'Bidirectional':
        return {
          background: '#FA8784',
          color: '#1A1A1A'
        };
        --tomato;
      case 'Destination':
        return {
          background: '#FA8784',
          color: '#1A1A1A'
        };
        --tomato;
      case 'Source':
        return {
          background: '#FA8784',
          color: '#1A1A1A'
        };
        --tomato;
      default:
        return {
          background: '#A7B3D9',
          color: '#1A1A1A'
        };
        --haze;
    }
  };
  const style = getBadgeStyle(direction);
  return <span style={{
    display: 'inline-block',
    padding: '0.125rem 0.375rem',
    borderRadius: '0.25rem',
    fontSize: '0.625rem',
    background: style.background,
    color: style.color,
    fontWeight: '500'
  }}>
      {direction}
    </span>;
};

<Card title="">
  <div style={{ display: 'flex', alignItems: 'center', marginBottom: '1rem' }}>
    <div style={{ width: '32px', height: '32px', marginRight: '0.75rem', display: 'flex', alignItems: 'center', justifyContent: 'center', flexShrink: 0 }}>
      <img src="https://mintcdn.com/permutive/pNhz39ducTVcQczh/images/integrations/logos/instagram.svg?fit=max&auto=format&n=pNhz39ducTVcQczh&q=85&s=62fb04108b4c0269ac8b0393e0bf47e1" alt="Instagram" style={{ maxWidth: '32px', maxHeight: '32px', display: 'block' }} width="132" height="132" data-path="images/integrations/logos/instagram.svg" />
    </div>

    <h3 style={{ margin: 0, fontSize: '1.125rem', fontWeight: '600' }}>Instagram</h3>
  </div>

  <div style={{ marginBottom: '1rem' }}>
    <BadgeRowCenter label="Direction">
      <DirectionBadge direction="Destination" />
    </BadgeRowCenter>

    <BadgeRowCenter label="Environment">
      <BadgeContainer>
        <EnvironmentBadge environment="Web" />
      </BadgeContainer>
    </BadgeRowCenter>

    <BadgeRowCenter label="Capability">
      <BadgeContainer>
        <CapabilityBadge capability="Cohort Activation" />
      </BadgeContainer>
    </BadgeRowCenter>

    <BadgeRowCenter label="SDK Required">
      <SdkRequiredBadge required="Yes" />
    </BadgeRowCenter>

    <BadgeRowCenter label="Product(s) Required">
      <ProductRequiredBadge product="Core Platform" />
    </BadgeRowCenter>
  </div>

  <p style={{ margin: 0, fontSize: '0.875rem', color: '#6b7280', lineHeight: '1.5' }}>
    Activate Permutive cohorts to Instagram for custom audience targeting via the Facebook Pixel integration.
  </p>
</Card>

<CardGroup cols={2}>
  <Card title="Setup" href="#setup" icon="gear" />

  <Card title="Troubleshooting" href="#troubleshooting" icon="wrench" />
</CardGroup>

## Overview

Instagram advertising is powered by the Meta ecosystem and uses the Permutive Facebook Pixel integration. There is no separate Instagram integration required.

<Info>
  Instagram targeting is powered by the Permutive [Facebook Pixel integration](/integrations/social-media/facebook). No separate Instagram integration is required.
</Info>

This integration is a Destination:

* **Destination:** Permutive sends cohort membership data to Facebook via the Facebook pixel, which can then be used for Instagram advertising campaigns.

Use cases include:

* Target Instagram users with ads based on Permutive cohorts
* Retarget users who visited your website on Instagram
* Build custom audiences for Instagram campaigns using real-time cohort data
* Create lookalike audiences for Instagram based on Permutive cohorts

## Environment Compatibility

| Environment    | Supported    | Notes                          |
| -------------- | ------------ | ------------------------------ |
| **Web**        | <YesBadge /> | Via Facebook Pixel integration |
| **iOS**        | <NoBadge />  | --                             |
| **Android**    | <NoBadge />  | --                             |
| **CTV**        | <NoBadge />  | --                             |
| **API Direct** | <NoBadge />  | --                             |

## Prerequisites

* **Facebook Pixel Integration:** The [Facebook Pixel integration](/integrations/social-media/facebook) must be set up and configured in your Permutive workspace. Instagram targeting uses the same Facebook pixel infrastructure.
* **Facebook Business Manager Access:** You must have access to Facebook Business Manager to create and manage audiences for Instagram campaigns.
* **Instagram Business Account:** Your Instagram account must be connected to Facebook Business Manager. You can link your Instagram account by navigating to **Business Settings > Instagram Accounts** in Facebook Business Manager.
* **Meta Pixel Installed:** The Meta (Facebook) pixel must be installed and active on your website to collect cohort data.

## Setup

<Tabs>
  <Tab title="Primary Setup Steps">
    <Steps>
      <Step title="Set Up Facebook Pixel Integration">
        Instagram targeting uses the Facebook Pixel integration. Follow the complete setup guide in the [Facebook integration documentation](/integrations/social-media/facebook#setup).

        This includes:

        * Verifying the Meta pixel is installed on your site
        * Adding the Facebook Pixel integration in Permutive
        * Configuring your Facebook account type (Core Setup or Non-Core Setup)
        * Enabling cohort activations to Facebook
      </Step>

      <Step title="Link Instagram Account in Facebook Business Manager">
        1. Navigate to [Facebook Business Manager](https://business.facebook.com/)
        2. Go to **Business Settings** in the menu
        3. Select **Instagram Accounts** from the left sidebar
        4. Click **Add** and follow the prompts to connect your Instagram Business Account
        5. Confirm that your Instagram account is linked and shows as active
      </Step>

      <Step title="Create Instagram Ads Using Permutive Audiences">
        1. In Facebook Ads Manager, create a new campaign or edit an existing one
        2. In the **Audience** section, select **Custom Audiences** or **Lookalike Audiences**
        3. Choose audiences that were built from Permutive cohorts (these are custom audiences created from the Facebook pixel events that Permutive sends)
        4. In the **Placements** section, ensure **Instagram** is selected as a placement option
        5. Continue with your ad creative and campaign settings

        <Note>
          Custom audiences built from Facebook pixel events can take 24-48 hours to populate after the integration is enabled.
        </Note>
      </Step>
    </Steps>
  </Tab>

  <Tab title="Web">
    Instagram targeting is configured entirely through Facebook Business Manager and Ads Manager. There is no additional web implementation required beyond the Facebook Pixel integration.

    Refer to the [Facebook integration Web tab](/integrations/social-media/facebook#setup) for technical details on how cohort data is sent to the Meta pixel.
  </Tab>

  <Tab title="iOS">
    Instagram targeting via Permutive cohorts is currently only supported on Web through the Facebook Pixel integration.
  </Tab>

  <Tab title="Android">
    Instagram targeting via Permutive cohorts is currently only supported on Web through the Facebook Pixel integration.
  </Tab>
</Tabs>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Instagram not appearing as a placement option in Ads Manager">
    If Instagram is not available as a placement option when creating campaigns in Facebook Ads Manager:

    * Verify that your Instagram Business Account is properly linked to Facebook Business Manager (**Business Settings > Instagram Accounts**)
    * Ensure your Instagram account is a Business Account, not a Personal Account
    * Check that your Facebook Business Manager account has the appropriate permissions for the Instagram account
    * Confirm that your ad campaign objective supports Instagram placements (some campaign objectives may have limited placement options)

    If issues persist, refer to [Meta's documentation on Instagram placements](https://www.facebook.com/business/help/1695926137115781).
  </Accordion>

  <Accordion title="Custom audiences not populating for Instagram campaigns">
    Instagram campaigns use the same custom audiences as Facebook campaigns. If your Permutive-based audiences are not populating:

    * Check the [Facebook integration troubleshooting](/integrations/social-media/facebook#troubleshooting) section for guidance on custom audience population
    * Verify that pixel events are firing correctly using the Meta Pixel Helper Chrome extension
    * Allow 24-48 hours for custom audiences to populate after the Facebook integration is enabled
    * Confirm that your custom audience definition in Facebook includes the correct pixel events (`PermutiveSegmentEntry` or `PermutiveSegmentEntry_<CohortCode>` depending on your account type)
  </Accordion>

  <Accordion title="Facebook Pixel integration issues">
    Since Instagram targeting relies on the Facebook Pixel integration, any pixel-related issues will affect Instagram campaigns. For troubleshooting:

    * Review the complete [Facebook integration troubleshooting guide](/integrations/social-media/facebook#troubleshooting)
    * Common issues include:
      * Facebook pixel not properly installed on your website
      * Incorrect Facebook account type configuration (Core Setup vs Non-Core Setup)
      * Cohort activations not enabled for Facebook in the Permutive dashboard
      * Third-party cookie blocking affecting match rates
  </Accordion>

  <Accordion title="Low match rates for Instagram audiences">
    Match rates for Instagram audiences depend on Facebook's ability to match website visitors to Instagram users. To improve match rates:

    * Ensure users are logged into Facebook/Instagram when visiting your site
    * Review Facebook's Event Match Quality metrics in Facebook Business Manager
    * Consider implementing Facebook's Conversion API for server-side data transfer (contact Permutive Support for guidance)
    * Note that third-party cookie blocking can significantly impact match rates
  </Accordion>
</AccordionGroup>
