# Everything around the loop, from an assistant

Run the settings, results, pushes, alerts and rules side of RecruitAffiliates.ai from Claude Code or any assistant.

Your assistant can do everything around the recruiting loop that you do on the Settings and Results screens, and in Integrations. These tools need an API key connection: Claude Code, Cursor or a script. Every change shows a card first, and nothing here sends email. Connecting a mailbox or another company's tool always happens in your browser. The assistant gives you the link. It never takes a key or a sign-in.

## Results, activity and exports

Ask your assistant "how is recruiting going this month?" and it reads the Results screen for you. Same numbers. Nothing extra.

| What you want | Tool | API operation |
|---|---|---|
| The Results numbers | `recruit_results` | `GET /v1/finder/results` |
| Today's five counts | `recruit_today` | `GET /v1/finder/today/counts` |
| What the team and the product did | `recruit_activity` | `GET /v1/finder/activity` |
| A file to download | `recruit_export` | `POST /v1/finder/exports` |

**Results** covers one period at a time: the last 7, 30 or 90 days, or all time. Of the people you saved in that period, it says how far each got: found, emailed, replied, talking terms, joining, live. It also says how long people wait in each stage and how each campaign did. It names the searches and lists behind the people who replied and joined. Then it gives your team's numbers. Every count comes with the period before it, so you can see the direction. People only. No opens. No clicks. Counts you can trust to mean one thing, wherever you read them.

If your account is also on AffiliateRail, Results adds sales for the people you recruited. Money is whole minor units with a currency, like 124050 pence, never a decimal.

**Activity** is a feed of lines like "Sam moved Lena to Talking terms". Filter by kind (email, pipeline, team or discovery), by one teammate or the product's own lines, by one affiliate, or by how recent. Lines come 25 a page, and older ones are a cursor away, so a long history never arrives as one huge answer.

### Downloads

`recruit_export` makes a link that works for ten minutes and downloads one CSV file. The four files are the ones the Export buttons give you:

- `saved`: your saved people, all of them, one list, or one saved filter
- `results`: the Results tables for a period
- `activity`: the Activity feed, with the filters above
- `interested`: people whose latest reply was interested, and anyone already invited

Exports are on paid plans. A trial gets a plain no, and no link is made. The plan is checked again when the link is opened, because a plan can end inside the ten minutes. Anyone who asked to be removed is left out of every file, and no file says where an email address came from.

The link is the whole key to that file, so give it to the person who needs it and don't post it. It names one account and one export. Ask again for a new one.

### Sales you made

A tracking app's affiliate report tells you who sold. Three tools bring that into Results. They are free, they reach nobody outside your account, and they send no email.

| Step | Tool | API operation |
|---|---|---|
| Check a report without saving anything | `recruit_preview_sales_import` | `POST /v1/finder/sales/import/preview` |
| Add it | `recruit_import_sales` | `POST /v1/finder/sales/import` |
| Mark one person's first sale | `recruit_made_sale` | `POST /v1/finder/sales/made` |

Send one month's report as CSV text. Only people who joined can match. An email match is certain. A discount code or a name is a guess, so the preview offers each back and you confirm the ones you agree with. A person's first sale is set once and never moves. The same file for the same month changes nothing, and a corrected file replaces it. Sales import is switched on per account, so if it says it isn't, ask us.

### What stays in the app

Nothing here changes your plan or your team. Billing, team roles, API keys, passwords and deleting the account stay in RecruitAffiliates.ai, always.

## Integrations

You can ask your assistant to look at, set up and use the tools your brand connects to: your affiliate tracking tool and your CRM. It also covers your cold email tool, Google Sheets and Clay, plus Slack and your affiliate network.

### Connecting is always a link

Connecting a mailbox or another company's tool needs a browser sign-in, or a key from your own account. So the assistant never asks you to paste a key into the chat. It gives you a link to the exact screen in RecruitAffiliates.ai and one sentence on what to do there. Ask for the link for any of these. A mailbox (gmail, outlook or another). A tracking tool, like Rewardful, FirstPromoter, Tolt, PartnerStack or Dub. Clay, Slack or Google Sheets. A CRM, like HubSpot, Attio, Pipedrive, Notion, Airtable or Salesforce. An outreach tool, like Instantly, Smartlead or lemlist. An affiliate network, like impact.com, Awin, Webgains or Partnerize. No tool or API operation takes a key, a token or a password.

### What you can ask for once a tool is connected

- See everything that is connected, what needs attention, and what your plan includes.
- Record where the brand tracks affiliates.
- Pick the campaign new partners join, or the place CRM records go.
- Read your current partners from your tracking tool, so they are kept out of every search and email.
- Add one affiliate who said yes to your tracking tool as a partner.
- Push a list, a saved filter or chosen people to a CRM, an outreach tool, Google Sheets or Clay. You see how many go, and how many don't and why, before anything moves. No email is sent by RecruitAffiliates.ai; your outreach tool does the sending.
- Turn the daily update on or off for a CRM or a sheet.
- Change a Slack channel's alerts, post a test message, or turn Slack off.
- Read an affiliate network's directory into Saved.
- Disconnect a tool. This deletes the key we hold.

Anyone who asked to be removed is never pushed anywhere. Someone you marked Do not contact is never added to a tracking tool, an outreach tool, Pipedrive, Notion, Airtable or Salesforce. HubSpot, Attio, Google Sheets and Clay keep records only, so the card tells you they are included there.

### Tools

| Tool | What it does | Card |
|---|---|---|
| `recruit_integrations` | Every tool, its state and what the plan allows | no |
| `recruit_connect_link` | The link to connect a service | no |
| `recruit_outreach_campaigns` | Campaigns in your Instantly, Smartlead or lemlist | no |
| `recruit_clay_progress` | How a push to Clay is going | no |
| `recruit_set_tracking_tool` | Record where you track affiliates | yes |
| `recruit_choose_destination` | Pick a tracking campaign or a CRM place | yes |
| `recruit_refresh_partners` | Read your current partners | yes |
| `recruit_refresh_places` | Read a CRM's places again | yes |
| `recruit_add_to_tracking_tool` | Add one affiliate as a partner | yes |
| `recruit_set_keep_in_sync` | Daily update on or off | yes |
| `recruit_push_people` | Push people to a tool (the card is the quote) | yes |
| `recruit_set_slack_alerts` | Change a channel's alerts | yes |
| `recruit_test_slack` | Post a test message | yes |
| `recruit_remove_slack` | Turn Slack off for a channel | yes |
| `recruit_disconnect_tool` | Disconnect a tool or network | yes |
| `recruit_import_network` | Read a network's directory into Saved | yes |

### API

| Operation | Does |
|---|---|
| `GET /v1/finder/integrations` | State of every tool; `list_id` or `segment_id` adds where it could go |
| `GET /v1/finder/integrations/{service}/connect-link` | The connect link |
| `GET /v1/finder/integrations/{provider}/campaigns` | Outreach campaigns |
| `GET /v1/finder/integrations/clay/batches/{batch_id}` | Clay progress |
| `POST /v1/finder/integrations/tracking-tool` | Where you track affiliates |
| `POST /v1/finder/integrations/{provider}/destination` | Tracking campaign or CRM place |
| `POST /v1/finder/integrations/{provider}/partners/refresh` | Read current partners |
| `POST /v1/finder/integrations/{provider}/targets/refresh` | Read a CRM's places |
| `POST /v1/finder/integrations/{provider}/add-affiliate` | Add one partner |
| `POST /v1/finder/integrations/{provider}/keep-in-sync` | Daily update |
| `POST /v1/finder/integrations/{provider}/push-quote` | Who goes and who doesn't |
| `POST /v1/finder/integrations/{provider}/push-chunk` | Push up to 50 |
| `POST /v1/finder/integrations/google_sheets/push` | Push a list to a sheet |
| `POST /v1/finder/integrations/clay/push` | Push rows to Clay |
| `POST /v1/finder/integrations/slack/{endpoint_id}/presets` | Slack alerts |
| `POST /v1/finder/integrations/slack/{endpoint_id}/test` | Slack test message |
| `DELETE /v1/finder/integrations/slack/{endpoint_id}` | Turn Slack off |
| `POST /v1/finder/integrations/{provider}/import` | Read a network's directory |
| `DELETE /v1/finder/integrations/{provider}` | Disconnect |

Plans: tracking tools work on any live plan; Google Sheets, Clay, CRMs and outreach tools need a paid plan; Slack alerts need Grow or above. A refusal says what the plan needs and nothing is changed. A test key sees every tool as not connected and changes none.

### What stays in the app

Signing in to another company and typing a key or address. Billing and plan changes, team roles, API keys and deleting the account stay there too.

## Settings around your outreach

Ask your assistant to look after the settings around your outreach. Nothing here sends an email. You connect a mailbox with your own browser sign-in. The assistant gives you a link. It never asks for a password or key.

### Mailboxes
Ask: "Which mailboxes can send?", "Why is my mailbox paused?", "Only send from 10 to 2 on weekdays", "Add my signature", "Unpause it".

| Tool | Route | What it does |
| --- | --- | --- |
| `recruit_mailboxes` | `GET /v1/finder/mailboxes`, `GET /v1/finder/mailboxes/{id}` | Every mailbox: can it send, why not, hours, signature, daily limit, domain records, and the link to connect another |
| `recruit_set_mailbox_hours` | `POST /v1/finder/mailboxes/{id}/hours` | Narrow the sending days and hours. They can't be wider than the product's |
| `recruit_set_mailbox_signature` | `POST /v1/finder/mailboxes/{id}/signature` | Set or clear the signature |
| `recruit_set_mailbox_warmup` | `POST /v1/finder/mailboxes/{id}/warmup` | Skip or restart the slow start |
| `recruit_unpause_mailbox` | `POST /v1/finder/mailboxes/{id}/unpause` | Lift a pause after a spam complaint or bounces. Emails you already queued go out again |
| `recruit_recheck_mailbox_records` | `POST /v1/finder/mailboxes/{id}/recheck_records` | Read the domain's SPF, DKIM and DMARC again |
| `recruit_check_mailbox_now` | `POST /v1/finder/mailboxes/{id}/check` | Ask the mail provider where a mailbox stands |
| `recruit_disconnect_mailbox` | `POST /v1/finder/mailboxes/{id}/disconnect` | Disconnect. Card first: it says what pauses |

### Switches and the account's name
`recruit_switches` and `recruit_set_switch` (`GET /v1/finder/switches`, `POST /v1/finder/switches/{name}`) turn the seven email and reminder switches on or off. They belong to the account owner. `recruit_rename_organization` (`POST /v1/finder/organization`) renames the account.

### Notifications
`recruit_notifications` reads the account owner's notifications. `recruit_mark_notification_read` and `recruit_mark_all_notifications_read` (`POST /v1/finder/notifications/{id}/read`, `/read_all`) mark them read. Re-sending a notification email stays in the app.

### Client links (Grow plan)
| Tool | Route | What it does |
| --- | --- | --- |
| `recruit_client_links` | `GET /v1/finder/client_links`, `GET /v1/finder/client_settings` | Links, how often they were opened, and what clients see |
| `recruit_create_client_link` | `POST /v1/finder/client_links` | Make a link. Its address is shown once |
| `recruit_revoke_client_link` | `POST /v1/finder/client_links/{id}/revoke` | Close a link. Card first |
| `recruit_client_link_views` | `GET /v1/finder/client_links/{id}/views` | When a client opened it |
| `recruit_set_client_fields` | `POST /v1/finder/client_settings/fields` | Choose what clients never see |
| `recruit_set_client_report` | `POST /v1/finder/client_settings/report` | Save the report's addresses or switch it off |

### Cards
Every change except reads asks first with a card that says what changes. Disconnecting a mailbox and closing a client link are cards too.

### Stays in the app
Connecting or reconnecting a mailbox, switching the weekly client report on, and re-sending a notification email.

# Rules and webhooks (for around.mdx)

## Rules
A rule is "when this happens, do these things", written once. For example, when a reply is Interested, assign Sam and set a follow-up in 2 days, and the board follows it from then on. Rules never send email. Each one is checked against your own brand, so a rule can't point at someone else's lists, lanes or teammates, whatever the assistant asks for. A step that adds a person to a campaign puts them on its review list. Their first email waits for your yes in RecruitAffiliates.ai.

Ask the assistant to show your rules and how often each ran, or what a rule can use on your brand. It can add, change, switch on or off, reorder or delete a rule. Three starter rules are ready-made. Switch one on.

| What | Tool | Route |
|---|---|---|
| List rules, with the plan's room | `recruit_rules` | `GET /v1/finder/rules` |
| What a rule can name and do | `recruit_rule_options` | `GET /v1/finder/rules/options` |
| Add a rule | `recruit_create_rule` | `POST /v1/finder/rules` |
| Change a rule | `recruit_update_rule` | `POST /v1/finder/rules/{id}` |
| Turn a rule on or off | `recruit_set_rule_enabled` | `POST /v1/finder/rules/{id}/enabled` |
| Put rules in order | `recruit_reorder_rules` | `POST /v1/finder/rules/reorder` |
| Delete a rule | `recruit_delete_rule` | `DELETE /v1/finder/rules/{id}` |
| Switch on a starter rule | `recruit_add_starter_rule` | `POST /v1/finder/rules/starters` |

Every change shows a card first. It says what will change, that it's free, and that no email is sent. A delete always asks. A rule may name only your own brand's teammates, lists, lanes and campaigns. Your plan allows a set number of rules across all brands, and a rule that's off still counts. Rules run in order. When two want to move a card, give it an owner, set its date or queue it, the first one wins.

## Webhooks
A webhook is a message our server sends to an address you own the moment something happens. These tools are for connections made with an API key. Assistants connected with Connect and Allow don't get them. They need the Grow plan.

| What | Tool | Route |
|---|---|---|
| Your addresses and their last deliveries | `recruit_webhooks` | `GET /v1/finder/webhook_endpoints` |
| One address's delivery log | `recruit_webhook_deliveries` | `GET /v1/finder/webhook_endpoints/{id}/deliveries` |
| Add an address | `recruit_create_webhook` | `POST /v1/finder/webhook_endpoints` |
| Turn an address on or off | `recruit_set_webhook_enabled` | `POST /v1/finder/webhook_endpoints/{id}` |
| New signing secret | `recruit_rotate_webhook_secret` | `POST /v1/finder/webhook_endpoints/{id}/rotate_secret` |
| One test event | `recruit_test_webhook` | `POST /v1/finder/webhook_endpoints/{id}/test` |
| Queue a delivery again | `recruit_replay_webhook_delivery` | `POST /v1/finder/webhook_deliveries/{id}/replay` |
| Delete an address | `recruit_delete_webhook` | `DELETE /v1/finder/webhook_endpoints/{id}` |

The signing secret is shown once, when an address is added and when its secret is rotated. Keep it then; it can't be read again. A private or local address is refused. A Slack link is a key to your Slack, so it never goes through the assistant: connect Slack in RecruitAffiliates.ai. A test event goes only to your own address, is marked as a test, and sends no email. What your server answered is shown as outside text. Delete and the other changes show a card first.
