Aller au contenu
NouveauDécouvrir comment

Gérer les contacts avec la CLI FirstSales

CRUD sur les contacts, listes et tags en ligne de commande — créations idempotentes, imports en masse, exports et suppressions volontaires limitées à un org et un workspace.

  1. Lister et lire les contacts

    Tout est rattaché à une organisation et un workspace. Commencez en lecture seule : listez les contacts, puis récupérez-en un par ID :

    firstsales contacts list --org ORG_ID --workspace WS_ID --json
    firstsales contacts get --org ORG_ID --workspace WS_ID --contact CONTACT_ID
  2. Créer et mettre à jour un contact

    Créez avec une clé d'idempotence pour éviter les doublons lors des relances ; la mise à jour ne modifie que les champs que vous envoyez :

    firstsales contacts create --org ORG_ID --workspace WS_ID \
      --data '{"email":"[email protected]","first_name":"Jane","company_name":"Acme"}' \
      --idempotency-key jane-acme-2026-01
    
    firstsales contacts update --org ORG_ID --workspace WS_ID \
      --contact CONTACT_ID --data '{"job_title":"VP Sales"}'
  3. Organiser avec des listes

    Les listes de contacts déterminent à qui une campagne envoie ses e-mails. Créez, renommez et supprimez des listes depuis le CLI :

    firstsales contact-lists list --org ORG_ID --workspace WS_ID
    firstsales contact-lists create --org ORG_ID --workspace WS_ID \
      --data '{"name":"Q1 SaaS founders"}'
    firstsales contact-lists update --org ORG_ID --workspace WS_ID \
      --list LIST_ID --data '{"name":"Q1 SaaS founders (US)"}'
  4. Gérer les tags en masse

    Les tags sont des étiquettes libres appliquées aux contacts. Vous pouvez renommer (ce qui fusionne) ou supprimer un tag partout où il apparaît : la suppression est destructive, elle nécessite donc --confirm :

    firstsales contact-tags list --org ORG_ID --workspace WS_ID
    firstsales contact-tags rename --org ORG_ID --workspace WS_ID \
      --data '{"from":"founder","to":"founders"}'
    firstsales contact-tags delete --org ORG_ID --workspace WS_ID \
      --data '{"tag":"stale"}' --confirm
  5. Import en masse

    Poussez un lot de contacts via un job d'import. Ciblez une liste ; la plateforme dédoublonne par e-mail côté serveur, donc réimporter les mêmes personnes ne créera pas de doublons :

    firstsales contact-imports create --org ORG_ID --workspace WS_ID \
      --data-file ./leads.json \
      --idempotency-key import-2026-01
  6. Exporter ce que vous avez filtré

    Listez vos jobs d'export / récupérez vos contacts en CSV pour du reporting ou une sauvegarde :

    firstsales contact-exports list --org ORG_ID --workspace WS_ID
  7. Supprimer avec discernement

    Supprimer un contact est destructif et nécessite --confirm. Préférez laisser le nettoyage suppresser automatiquement les mauvaises adresses plutôt qu'une suppression définitive : la suppression est permanente :

    firstsales contacts delete --org ORG_ID --workspace WS_ID \
      --contact CONTACT_ID --confirm

Astuces de pro

  • Segmentez avec les listes, étiquetez avec les tags

    Les listes décident à qui une campagne envoie ; les tags sont des étiquettes transverses pour le filtrage. Utilisez les deux : un contact peut appartenir à une liste et porter de nombreux tags.

  • L'import est idempotent et dédupliqué

    La déduplication par e-mail côté serveur signifie qu'un import relancé ne dupliquera pas votre liste. Passez tout de même --idempotency-key pour que le job d'import lui-même ne soit pas créé deux fois.

  • Ne supprimez pas définitivement pour suspendre l'envoi

    Pour arrêter d'écrire à quelqu'un, laissez le nettoyage le marquer comme dirty ou fiez-vous au statut bounced/unsubscribed : ceux-ci s'excluent automatiquement. Réservez contacts delete --confirm à une véritable suppression.

  • rename fusionne les tags

    Renommer un tag vers un nom existant les fusionne. Pratique pour nettoyer « founder » vs « founders » : mais ce n'est pas réversible, vérifiez donc le nom cible au préalable.

Questions fréquentes

Comment les contacts sont-ils rattachés ?

À une organisation et un workspace. Chaque commande de contact prend --org et --workspace ; les mêmes ID de contact ne se résoudront pas dans un autre workspace.

Comment éviter les doublons de contacts à l'import ?

Les imports dédupliquent par e-mail côté serveur, donc réimporter les mêmes personnes les ajoute à la liste sans créer de doublons. Passez --idempotency-key pour que le job d'import lui-même soit aussi sûr à relancer.

Quelle est la différence entre les listes et les tags ?

Les listes définissent l'audience à laquelle une campagne envoie ; les tags sont des étiquettes libres pour le filtrage et la segmentation. Un contact appartient à des listes et peut porter de nombreux tags.

Comment retirer un tag partout ?

contact-tags delete --confirm le retire de tous les contacts, et contact-tags rename fusionne un tag dans un autre. Les deux sont destructifs, la suppression nécessite donc --confirm.

Puis-je exporter mes contacts ?

Oui : utilisez contact-exports pour récupérer vos contacts en CSV. Dans l'application, l'export reflète votre filtre/sélection actuel ; via l'API, vous travaillez avec des jobs d'export.

Dois-je supprimer les contacts en bounce ?

Généralement non. Les contacts en bounce, désabonnés ou signalés par le nettoyage (dirty) sont automatiquement exclus des envois, la suppression est donc rarement nécessaire. Ne supprimez définitivement que lorsque vous voulez vraiment faire disparaître l'enregistrement, et cela nécessite --confirm.

Développeur & CLI

Une prospection qui continue quand vous vous déconnectez.Leads, emails, relances et réponses, gérés.

Connectez des boîtes illimitées et laissez les agents IA trouver les leads, écrire chaque email et relancer. Ou envoyez vos propres modèles en mode manuel. À partir de $29/mois.

$1 pour 3 jours · Annulez quand vous voulez · Sans engagement

Installer avec l'IA

Votre agent de code installe la CLI et les skills FirstSales pour vous.

Prompt pour Claude Code

I'm setting up FirstSales (https://firstsales.io), an AI outbound sales platform: campaigns, contacts, a reply inbox, deliverability and lead signals. Help me get my workspace sending real, good emails end to end, from Claude Code.

Read these first so you know how FirstSales works:
- Developer docs and API: https://developer.firstsales.io
- CLI: https://www.npmjs.com/package/@firstsales.io/cli
- Skills for coding agents: https://github.com/firstsalesio/firstsales-skills (read README.md and GUIDE.md)

Setup
1. Install the CLI: npm install -g @firstsales.io/cli
2. Install the FirstSales skills:
   claude plugin marketplace add firstsalesio/firstsales-skills
   claude plugin install firstsales@firstsales
3. Ask me if I already have a FirstSales account. If not, send me to https://app.firstsales.io to sign up.
4. Ask me to create an API key under Settings → API → API Keys, with only the scopes we need.
   Never ask me to paste the key into this chat. Tell me to run this in my own terminal, so the key stays hidden:
   read -rs FS_KEY && firstsales auth login --api-key "$FS_KEY"; unset FS_KEY
5. Run `firstsales whoami` and tell me which workspace and organisation we are connected to.

Then ask me about my business: what I sell, who I sell to (roles, company size, countries), my best customers, and what I use today for outbound (tools, lists, mailboxes). Walk me through:
1. Teaching FirstSales my business: website, offer, proof points and case studies in the knowledge base, so the AI writes like someone who knows the product.
2. Connecting my sending mailboxes and checking my sending domain: SPF, DKIM, DMARC and warm-up. If anything is unhealthy, tell me the exact DNS record to add.
3. Bringing in contacts: import my CSV or CRM export into a clean list, remove duplicates and bad emails, and block domains I must never email (customers, competitors, my own).
4. Building my first campaign: the right list, senders, steps and timing. Write the sequence with me, show me the drafts, and do not launch until I say yes.
5. Setting up Signals if it fits: find people engaging with LinkedIn posts about topics my buyers care about, and turn them into leads.
6. Inviting my team and giving each person the right access.

Once campaigns run, show me how to work the reply inbox from here: which replies need an answer, draft responses in my voice, and move good conversations into deals. If I use Cal.com, connect it so follow-ups can offer my booking link (not the first email).

Throughout, as you learn about my business, proactively suggest and help create:
- Reply templates for the questions and objections my prospects are likely to raise, based on my product, site and codebase if you can see them.
- Campaign ideas and segments worth testing, with the reason for each.

Safety rules:
- Show every change as a dry run (--dry-run) first and wait for my yes. Never send emails, launch campaigns or delete anything without my yes.
- Tell me before anything that spends credits, and how many.

Be opinionated. If the docs give a sensible default, just use it. Don't make me choose between five options.