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

# Engaging Networks Integration

> Manual newsletter subscription sync between Engaging Networks and Outpost. Currently in Labs.

export const PlanStatus = ({tier, status, beta, deprecated}) => {
  const variants = {
    luna: {
      bg: "#8340B9",
      color: "#ffffff",
      border: "1px solid #8340B9"
    },
    voyager: {
      bg: "#6B2FA0",
      color: "#ffffff",
      border: "1px solid #6B2FA0"
    },
    "space-station": {
      bg: "transparent",
      color: "#8340B9",
      border: "1px solid #8340B9"
    },
    "all-plans": {
      bg: "transparent",
      color: "#525252",
      border: "1px solid #a3a3a3"
    },
    labs: {
      bg: "transparent",
      color: "#a16207",
      border: "1px solid #a16207"
    },
    beta: {
      bg: "transparent",
      color: "#a16207",
      border: "1px solid #a16207"
    },
    "invite-only": {
      bg: "transparent",
      color: "#525252",
      border: "1px solid #a3a3a3"
    },
    bespoke: {
      bg: "transparent",
      color: "#525252",
      border: "1px solid #a3a3a3"
    },
    "outpost-hosted": {
      bg: "transparent",
      color: "#525252",
      border: "1px solid #a3a3a3"
    },
    deprecated: {
      bg: "transparent",
      color: "#b91c1c",
      border: "1px solid #b91c1c"
    }
  };
  const chip = (variant, label) => {
    const s = variants[variant] || variants["all-plans"];
    return <span key={variant + ":" + label} style={{
      display: "inline-flex",
      alignItems: "center",
      padding: "0.15rem 0.55rem",
      fontSize: "0.7rem",
      fontWeight: 700,
      letterSpacing: "0.05em",
      textTransform: "uppercase",
      borderRadius: "3px",
      lineHeight: 1.4,
      whiteSpace: "nowrap",
      backgroundColor: s.bg,
      color: s.color,
      border: s.border
    }}>
        {label}
      </span>;
  };
  const tierLabel = {
    "luna": "Luna",
    "voyager+": "Voyager+",
    "voyager-luna": "Voyager + Luna",
    "space-station+": "Space Station+",
    "all-plans": "All plans"
  };
  const tierVariant = {
    "luna": "luna",
    "voyager+": "voyager",
    "voyager-luna": "voyager",
    "space-station+": "space-station",
    "all-plans": "all-plans"
  };
  const statusLabel = {
    "labs": "Labs",
    "invite-only": "Invite-only",
    "bespoke": "Bespoke",
    "deprecated": "Deprecated",
    "outpost-hosted": "Outpost Hosted"
  };
  return <span style={{
    display: "inline-flex",
    gap: "0.4rem",
    flexWrap: "wrap",
    alignItems: "center",
    margin: "0 0 1.25rem 0"
  }}>
      {tier && chip(tierVariant[tier], tierLabel[tier])}
      {status && chip(status, statusLabel[status])}
      {beta && chip("beta", "Beta")}
      {deprecated && chip("deprecated", "Deprecated")}
    </span>;
};

<PlanStatus status="labs" />

<Warning>
  The Engaging Networks integration is not yet a self-serve product. Subscription syncs run manually as part of an internal Outpost workflow. If you'd like to use it for your publication, contact [support@outpost.pub](mailto:support@outpost.pub).
</Warning>

The Engaging Networks integration brings newsletter subscription preferences from [Engaging Networks](https://www.engagingnetworks.net/) into Outpost so that supporters who unsubscribe in Engaging Networks have their Outpost member record updated to match.

## What syncs today

| Engaging Networks data        | Outpost data                          |
| ----------------------------- | ------------------------------------- |
| Email subscription flag (Y/N) | Member newsletter subscription status |

The sync is **one-way**: Engaging Networks → Outpost. Only members who already exist in Outpost are affected — the sync does not create new members.

## How runs happen

Runs are coordinated by the Outpost team. The flow is:

1. Outpost requests a supporter-data export from Engaging Networks.
2. Once the export is available, Outpost ingests it.
3. Each supporter is compared against the matching Outpost member by email.
4. Where the email subscription flag differs (e.g. unsubscribed in Engaging Networks, still subscribed in Outpost), the Outpost record is updated.

There is no self-serve UI for triggering or scheduling the sync today. To request an Engaging Networks sync — initial or recurring — write to [support@outpost.pub](mailto:support@outpost.pub) with your Engaging Networks API credentials.

## FAQ

<AccordionGroup>
  <Accordion title="Is there a way to set this up myself?">
    Not yet. The current integration is internal-only. We're working on a self-serve flow; contact [support@outpost.pub](mailto:support@outpost.pub) if you'd like to be on the list when it ships.
  </Accordion>

  <Accordion title="Which direction does subscription status sync?">
    Engaging Networks → Outpost only. Changes made in Outpost are not pushed back to Engaging Networks.
  </Accordion>

  <Accordion title="Will this integration create new members in Outpost?">
    No. The sync only updates subscription preferences for members who already exist in Outpost.
  </Accordion>
</AccordionGroup>
