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

# Snap

> Track Snap traffic for attribution and merit-based routing.

export const RevokeAccessFAQ = ({platformName, oauthDashboardUrl, autoRevoke}) => {
  if (autoRevoke) {
    return <Accordion title={`Q: How do I revoke access to my ${platformName} data?`}>
        <Danger>
          Revoking access <strong>will stop OneView from sending conversions to your {platformName} account</strong>.
        </Danger>
        <p>
          You need to revoke access to your {platformName} data on both ends:
        </p>
  
        <ol>
          <li>
            <strong>From OneView</strong>: Navigate to <a href="https://oneviewhub.com/workspace/settings/ad-accounts">Ad Accounts settings</a> and disconnect your {platformName} account.
          </li>
          <li>
            <strong>From {platformName}</strong>: Use your dashboard at (<a href={oauthDashboardUrl}>{oauthDashboardUrl}</a>) and remove <strong>OneView Platform</strong> from your account.
          </li>
        </ol>
        <p>
      When you disconnect your {platformName} account from your OneView workspace, <strong>all credentials are deleted</strong> (on OneView) and <strong>access revocation is requested</strong> (to {platformName}) automatically on your behalf.
    </p>
      </Accordion>;
  }
  return <Accordion title={`Q: How do I revoke access to my ${platformName} data?`}>
      <Danger>
        Revoking access <strong>will stop OneView from sending conversions to your {platformName} account</strong>.
      </Danger>
      
      <p>
          You need to revoke access to your {platformName} data on both ends:
        </p>

      <ol>
        <li>
          <strong>From OneView</strong>: Navigate to <a href="https://oneviewhub.com/workspace/settings/ad-accounts">Ad Accounts settings</a> and disconnect your {platformName} account.
        </li>
        <li>
          <strong>From {platformName}</strong>: Use your dashboard at (<a href={oauthDashboardUrl}>{oauthDashboardUrl}</a>) and remove <strong>OneView Platform</strong> from your account.
        </li>
      </ol>
    </Accordion>;
};

export const IntegrationTemplateAttributionOnly = ({platformName}) => {
  return <>
      <p>
        {platformName} is configured as an <strong>attribution-only</strong> integration in OneView. OneView tracks {platformName} touchpoints for attribution and includes them in <a href="/docs/platform/features/processing/merit-based-routing">merit-based routing</a> decisions, but does not send conversion data back to {platformName}'s API.
      </p>

      <Warning>
        <strong>No conversion data is sent back to {platformName}.</strong> If you need conversion data sent to {platformName} for campaign optimization, use {platformName}'s native tracking or <a href="mailto:support@oneviewhub.com">request a full Conversion API integration</a>.
      </Warning>

      <h2>Merit-Based Routing</h2>

      <p>
        When {platformName} touchpoints overlap with Conversion API platforms (like Google Ads or Meta), <a href="/docs/platform/features/processing/merit-based-routing">merit-based routing</a> determines which platform receives the conversion based on your attribution model and conversion merit. If {platformName} wins attribution, the conversion is recorded in OneView but not sent anywhere.
      </p>

      <h2>Setup</h2>

      <p>
        Configure UTM parameters in your {platformName} campaigns with <code>utm_source</code> identifying the platform. OneView automatically captures UTM parameters from all traffic sources—no additional configuration needed.
      </p>

      <Accordion title="How does merit-based routing work with attribution-only platforms?">
        <p>
          When overlapping conversions occur, merit-based routing evaluates all touchpoints, including attribution-only platforms:
        </p>

        <ol>
          <li>OneView collects touchpoints from all sources ({platformName} via UTM, Conversion API platforms via click identifiers)</li>
          <li>Your attribution model determines which touchpoint gets credit</li>
          <li><strong>If the winner is a Conversion API platform</strong> (e.g., Google Ads, Meta), OneView sends the conversion to that platform's API</li>
          <li><strong>If the winner is attribution-only</strong> (e.g., {platformName}), the conversion is recorded in OneView but not sent anywhere</li>
          <li>{platformName} remains visible in reports showing it was part of the customer journey</li>
        </ol>
      </Accordion>

      <h2>Next Steps</h2>

      <CardGroup cols={2}>
        <Card title="Learn about merit-based routing" icon="ranking-star" href="/docs/platform/features/processing/merit-based-routing">
          Understand how OneView routes overlapping conversions based on attribution merit.
        </Card>
        
        <Card title="Learn about conversions" icon="book-open" href="/docs/platform/concepts/conversions">
          Understand how OneView processes conversions across platforms.
        </Card>
      </CardGroup>
    </>;
};

export const IntegrationHero = ({logoSrc, alt = "Integration logo", maxHeight = 160}) => {
  const containerStyle = {
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center',
    width: '100%',
    height: '220px'
  };
  const imgStyle = {
    maxHeight: `${maxHeight}px`,
    maxWidth: '100%'
  };
  return <Frame>
      <div style={containerStyle}>
        <img noZoom src={logoSrc} alt={alt} style={imgStyle} />
      </div>
    </Frame>;
};

<IntegrationHero logoSrc="/assets/logos/integrations/Snapchat.svg" alt="Snap" />

<IntegrationTemplateAttributionOnly platformName="Snap" />

## Troubleshooting

<AccordionGroup>
  <RevokeAccessFAQ platformName="Snap" oauthDashboardUrl="https://accounts.snapchat.com/v2/manage-apps" />
</AccordionGroup>
