Integrations

Integrations

Ecomyard connects to the tools your team already runs on. The more you connect, the more specific your briefs, analytics and Ecomyard AI answers become.

Connections and Settings, Integrations both open with Connect a source, which lists every tool that is not connected yet and opens the page where you connect it, and Request app, which sends us the name of a tool Ecomyard does not connect to yet.

Available connections

  • Google Drive: live. Connect once and everything your team uploads lands in your own Drive, in a folder tree Ecomyard provisions and indexes: New creative, Upload in bulk, files on a creative and the content hub. A creator's portal delivery goes there once you approve it, and every post that tags you on Instagram is copied into Content library / Tagged on Instagram once Instagram is connected. Posts added as links stay links. Deleting in Ecomyard never deletes in Drive. File-level access only (drive.file): Ecomyard can never read files you did not hand it.
  • Slack: keep your team in the loop on board and brief activity.
  • Shopify: bring in products and orders, attribute sales to creators and issue their discount codes.
  • Claude: live. Connect your own Claude to this workspace over MCP so it can answer from your markets, personas, briefs, board and affiliate program.
  • Instagram: sign in with your brand's Instagram business or creator account once. No Facebook Page needed. Posts that tag you, and collabs you accepted, are read every two hours, your whole history on the first runs, and each file goes to one folder in your Drive, Tagged on Instagram, named after its creator and day. The content hub shows them under Tagged on Instagram, per creator with their numbers, and the last 30 days land under Deliveries, linked to the affiliate who posted them. Posts that mention your handle in the caption, and stories that mention you, arrive as they happen once Meta has reviewed the app; a story's file goes to your Drive like a post's, within minutes, so it keeps playing after it ends on Instagram, and its creator's profile photo, name and follower count come with it. For stories, turn on Allow access to messages in the Instagram app (Messages and story replies, Message controls, Connected tools): Ecomyard reads only the story mentions among your messages. Everybody who tags you and isn't an affiliate yet goes on Discover. The bio check of affiliates, and Discover's followers, engagement and look-up, read other accounts through Meta's Business Discovery, which works only with a Facebook login; Ecomyard doesn't ask for one yet. Instagram's sign-in lasts sixty days and Ecomyard renews it by itself. Your affiliates do not have to connect anything.
  • Klaviyo: planned. Affiliate email sends through Resend until then.

Connecting a tool

  1. Open Connections in the sidebar.
  2. Pick a provider and follow the connect flow.
  3. Its status shows as connected, not connected or needs attention.

Why it matters

Ecomyard AI answers from what you connect. Without Shopify it cannot give you revenue numbers. Connect your core stack early so the rest of the product works at full strength.

Shopify

Connect your store from Connections → Shopify: enter your myshopify.com domain, approve the app in your Shopify admin, done.

Once connected:

  • Orders that carry a creator's discount code are attributed automatically, with commission held.
  • Fulfilment releases the commission to the creator's pending balance; refunds void or reverse it.
  • A cancelled order takes its commission back too, refund or no refund.
  • Single-use safe-link discount codes are created in Shopify automatically, so every shared link keeps working.

The nightly check

Shopify reports every order, refund, shipment and cancellation the moment it happens. Every night Ecomyard also reads the last three days of orders in your store and holds them against what it has, so an update that never arrived is put right by the next morning, and webhooks that went missing are registered again.

An order is only added for a creator who was already active in Ecomyard when it was placed. While you move over from another affiliate tool, the orders that tool pays stay with it. An order added this way sends no New sale mail; the creator hears about it when it ships.

Permissions requested, exactly what Shopify shows you at connect: orders, refunds and fulfilments including orders older than sixty days (read_orders, read_all_orders, read_fulfillments), discount codes (read_discounts, write_discounts), products and their unit cost so margin is real (read_products, read_inventory), shop-wide sales figures for the dashboard (read_reports), gifts as draft orders (read_draft_orders, write_draft_orders), and your markets (read_markets).

Slack

Connect from Connections → Slack, approve the app, then invite the Ecomyard bot to the channels your flows post to.

  • Slack steps in automation flows deliver their message to the configured channel within minutes.
  • Placeholders like {{name}} and {{tier}} fill in per creator.
  • If the bot is not in a channel, the step is marked failed with the reason; invite the bot and future runs deliver.

Permissions: post messages (chat:write), read the channel list (channels:read).

Email (Resend)

Flow email steps and campaigns send through Resend on your own sending domain. Emails are branded automatically and personalised per creator. Set up requires a Resend API key and a verified domain.

Claude

Connect your own Claude to a workspace over MCP. This is not a chat window inside Ecomyard: you stay in Claude, and Ecomyard becomes a connector it can read from. Ask which personas have nothing at bottom of funnel, hand it the research behind a persona instead of pasting it into a chat, and let it leave a brief or a worklist task behind when you allow that.

Only owners and admins can create or revoke a connection. Every member can see which connections exist and what they have been doing.

Create the connection in Ecomyard

  1. Open Connections → Claude and choose New connection.
  2. Name it after where it will live, for example Claude desktop, Lars or Shared research chat. That name is what you will see on every row in the activity list, so a second connection is worth naming properly.
  3. Copy the URL you are shown.

The URL is the whole credential. Ecomyard stores only a hash of it, so it is shown exactly once and can never be shown again. Lose it and you replace the connection rather than recover it. Paste it into Claude and nowhere else.

New connections start read only. Claude can read this workspace and change nothing until you switch write access on yourself.

Add it in Claude

  1. Open Claude in the browser or the desktop app.
  2. In the message box, choose the + button, then Connectors, then Add connector, then Add custom connector. You can also reach the same screen from Customize → Connectors.
  3. Give it a name. This is the name you will see in your own connectors list, so something like Macbook Pro, Akram is more use than Ecomyard.
  4. Paste the URL into the second field, the one asking for the HTTPS address where the server accepts MCP requests. Paste the whole thing, including the long part after /api/mcp/.
  5. Choose Continue. Claude checks the server and then asks you to confirm. Ecomyard uses no OAuth, so leave any client id and secret fields empty.
  6. Open a new chat and ask Claude what it can see.

On a Team or Enterprise plan an owner adds the connector once under Organization settings → Connectors. Everyone else then finds it under Customize → Connectors, labelled Custom, and chooses Connect.

Or connect by signing in

Instead of a connection URL you can paste the address under Connect by signing in on the same page. It ends in /api/mcp/w/ and your workspace's id, carries no secret, and Claude asks you to sign in to Ecomyard and approve the workspace. An owner or admin has to be the one who approves.

A connector added with the general address, /api/mcp without the workspace part, reads the one workspace you approved it for. Approve it for more than one and it asks for the address of the workspace you mean.

Back in Ecomyard the panel watches for the first call and says so when it arrives, so you can tell a working connection from a typo without guessing.

What Claude can read

Seventeen tools, all read only:

  • Personas with their research: the profile, the barriers and their reframes, the hooks, the worklist, the format plan and the sources behind the claims (list_icps, get_icp).
  • Markets with their countries, language, currency, price level, ad channels and marketplaces, and every competitor with the claim it leads on and the weakness you can press (list_markets, get_market). How aware a buyer is lives in each persona's research.
  • Briefs with their status, funnel stage, reward, compensation type and script (list_briefs).
  • The content board: every creative with its name, status, funnel stage, format, concept, landing, persona, products, creators and number, which is what a naming convention is built from. It can look a creative up by part of its name (list_creatives).
  • Every file on a creative, with a download link that works for an hour. Claude can hand that link to Meta's upload, so a video goes from your Google Drive into Ads Manager without anyone downloading it and choosing it again. Files kept in Ecomyard's own storage have no link yet.
  • Your naming convention, with what each field is filled with, the short codes behind it and which ones are still missing, and for every creative the name the launch card gives it and whether its name already matches, so a rename is exact rather than guessed. It comes with the creatives.
  • Products in the catalogue with their SKU, short code and price (list_products).
  • Automation flows with their trigger, status and a plain line per step (list_flows, get_flow).
  • Affiliate results for any window, the affiliate dashboard's own figures (affiliate_dashboard).
  • The affiliate funnel: how many applied, were approved, were rejected, chose a portal password and placed a first order, each against the window before, the median days between those steps, and the affiliates approved more than two weeks ago who have not sold yet (affiliate_funnel).
  • The roster: every affiliate with their tier, status and every discount code written exactly as Shopify holds it, with their orders, revenue and commission in a window and in the window before (list_affiliates).
  • Orders on affiliate codes, one by one: the Shopify order name, the code it was placed with, the amount, the country, whether the buyer was new and the products, with totals that match the affiliate dashboard for the same days. Nothing else about a buyer is kept or shown (affiliate_orders).
  • What moved on the content board: creatives submitted, approved, gone live and closed in a window, and which ones went live (creative_activity).
  • Commission as it stands: pending, approved but unpaid, and paid in a window, with the affiliates owed the most (commission_status).
  • Alerts for codes that look abused or leaked: a sudden spike in orders, a code used mostly by returning customers, and a top seller who went quiet (affiliate_alerts).
  • The counts across the workspace, split by funnel stage and by status (workspace_summary).

Every window is whole days in your shop's own time zone, which Ecomyard reads from Shopify every night, so yesterday is your yesterday and an order at half past midnight counts for the day it was placed. Order names and whether a buyer was new come from Shopify as well, the moment an order comes in or the night after.

Claude is also told what your evidence labels mean, so a claim marked assumed or inferred does not arrive dressed as a fact.

Turning write access on

Write is off until you switch it on, per connection, from the menu at the end of a connection row. Turning it on asks you to confirm. Turning it off does not.

Until then Claude is not shown the tools that write at all, so an agent that reports on your program never sees one that changes it. After switching write on, reconnect Ecomyard in Claude so it loads them.

With write on, Claude gets nine more tools and nothing else:

  • Create a persona and update a persona (create_icp, update_icp).
  • Create a brief (create_brief).
  • Add one task to a persona's worklist (add_icp_action).
  • Create an automation flow as a draft (create_flow).
  • Create creatives, up to fifty in one call (create_creative), with lead product, persona, format, concept, landing, funnel stage, status, creator and number. Without a name, a new creative is named by your naming convention with the next free number for its concept, so it is named right from the start. Asking Claude to put Bram Davina's new UGC in is enough.
  • Update creatives, up to fifty in one call (update_creatives): rename them to your naming convention, move their status, set persona, lead product, format, concept, landing, funnel stage or number, and add who made them. Only the fields it sends change, each creative is answered on its own with the reason when one is refused, and running counts as launched, the same as Launched in Ecomyard. A status Claude changes, and a creative Claude made, shows in the creative's Activity as Claude's.
  • Set the naming convention (set_naming_convention), once you have agreed one with Claude. It replaces the one under Settings → General for the whole team, and a field the launch card does not know, such as {brand}, is refused.
  • Set the naming codes (set_naming_codes): a short code per product and per format, such as NS for a product and VID for Video, which the convention reads.

A creator Claude names who is not in Ecomyard yet is added as a creator, without an invitation: no code, no program, no mail.

A brief Claude creates is always private. It lands on your board as a draft and reaches the creator marketplace only when a person publishes it, so nothing an AI wrote gets in front of a creator unread.

The safeguards, plainly

  • There is no delete tool. Nothing Claude can call removes a persona, a brief, a market, a flow, a creative or a creator. An update leaves every field it does not send alone, but a list it does send replaces the old one in full.
  • The workspace boundary is enforced in the database, not in the request. The connection is verified inside Postgres, which binds the workspace before any tool runs, so a tool body cannot reach past it even by accident.
  • Every tool tells Claude whether it only reads. The seventeen reading tools run without interrupting you; the nine that write always ask first. Without that distinction Claude would gate all twenty-six the same way, and being asked to approve a list of markets as often as a new brief is what teaches people to stop reading the question.
  • The URL is a password. It is stored hashed, shown once, and revoking a connection kills it on the next call.
  • Every call is listed, refusals included, with the connection that made it, the tool, the arguments and whether it worked. The one call that is not listed is one that hits the hourly cap, because it never reaches your workspace at all.

The activity list

Under the connection list, Activity shows what Claude actually did: the tool it called, the arguments it sent, and the reason when Ecomyard said no. A read-only connection trying to write, an id that is not an id, a tool that does not exist: all of them land there with the reason in plain words. With two connections, each row names which one made the call.

When something is not working

  • Claude's server check fails while adding the connector. Check that you pasted the whole URL. A URL that is cut short, or one from a connection that has been revoked, cannot answer.
  • Claude says the connector needs authentication, or nothing comes back. The URL is wrong or the connection was revoked. Create a new one and paste it again.
  • Claude reports that a connection is read only. That is the connection doing its job. Switch write access on from the menu on the row if you meant to.
  • A connection says "Never used" a day after you added it. Only a tool call updates that, so the URL never reached Claude. Check that you pasted the whole URL, including the part after /api/mcp/.
  • Claude is told to wait. Each connection has an hourly call limit. It resets on its own; retrying immediately does not help.
  • Claude says the address does not say which workspace. The connector was added with the general address and approved for more than one workspace, or for none you still belong to. Add it again with the address under Connect by signing in in the workspace you mean.
  • Something changed that you did not expect. Open Activity, find the call, and revoke the connection from its menu. The URL stops working immediately, and everything that connection already did stays on the list.