DEV Community

Rahul Sharma
Rahul Sharma

Posted on

CF7 to Trello: Cards Not Being Created Every Cause Explained

Trello is one of the simplest project management tools and its API is one of the most straightforward to call. Yet CF7 to Trello integrations fail constantly, usually for the same handful of reasons that are never clearly documented anywhere.

This post covers every cause of CF7 submissions not creating Trello cards, with direct API calls you can use to verify each piece before connecting your form.

Cause 1: API Key and Token Confusion

Trello uses a two-part authentication system that trips up most developers on first setup.

You need two separate values:

  • API Key: Found at trello.com/power-ups/admin after creating a Power-Up. This is your application identifier.
  • API Token: Generated separately by authorising your Power-Up to access your Trello account. This is the user-level access grant.

The API Key alone cannot make API calls. The Token alone cannot make API calls. Both are required on every request.

The correct API call format is:

https://api.trello.com/1/cards?key=YOUR_API_KEY&token=YOUR_TOKEN
Enter fullscreen mode Exit fullscreen mode

Or as headers:

curl -X POST "https://api.trello.com/1/cards" \
  -H "Accept: application/json" \
  -d "key=YOUR_API_KEY" \
  -d "token=YOUR_TOKEN" \
  -d "idList=YOUR_LIST_ID" \
  -d "name=Test Card from CF7" \
  -d "desc=This is a test submission"
Enter fullscreen mode Exit fullscreen mode

If either value is missing or swapped, Trello returns invalid key or invalid token.

How to generate a token: After generating your API Key, go to:

https://trello.com/1/authorize?expiration=never&scope=read,write&response_type=token&name=CF7+Integration&key=YOUR_API_KEY
Enter fullscreen mode Exit fullscreen mode

Replace YOUR_API_KEY with your actual key. Authorise and copy the token from the resulting page.

Cause 2: Using Board ID Instead of List ID

Cards in Trello are created inside Lists, not inside Boards. The API endpoint for creating a card requires a List ID (idList), not a Board ID.

Board IDs and List IDs look identical — both are 24-character alphanumeric strings. This is where most configuration errors happen. The plugin asks for a List ID. The user looks up their Board URL, copies the Board ID, and pastes it in. The API returns invalid id or creates nothing.

Find your List ID:

# Get all lists on a board
curl "https://api.trello.com/1/boards/YOUR_BOARD_ID/lists?key=YOUR_API_KEY&token=YOUR_TOKEN"
Enter fullscreen mode Exit fullscreen mode

Each list in the response has an id field. That 24-character string is what goes in the idList parameter when creating a card.

Find your Board ID from the board URL: trello.com/b/BOARD_ID/board-name. The short code after /b/ is not the full ID. To get the full Board ID:

curl "https://api.trello.com/1/members/me/boards?key=YOUR_API_KEY&token=YOUR_TOKEN&fields=id,name"
Enter fullscreen mode Exit fullscreen mode

Cause 3: The Card Description Can Only Hold One Mapped Field in Free Plugins

Unlike ClickUp which has custom fields, Trello cards have a limited structure: Name, Description, Labels, Due Date, and Members. Most CF7 to Trello integrations map form data to the card Name and Description.

The Description field in Trello accepts plain text or Markdown. If your form has multiple fields (name, email, phone, message), you need to concatenate them into a single Description string.

Many free CF7 Trello plugins only allow mapping one CF7 field to the Description. If you have a form with five fields, four of them go nowhere. The card is created with just the name and one field value.

The correct approach when using the Trello API directly is to build the description as a multi-line string:

{
  "idList": "YOUR_LIST_ID",
  "name": "Enquiry from [your-name]",
  "desc": "**Name:** [your-name]\n**Email:** [your-email]\n**Phone:** [your-phone]\n**Message:** [your-message]"
}
Enter fullscreen mode Exit fullscreen mode

Trello renders Markdown in card descriptions, so **Name:** renders as bold in the Trello UI.

Cause 4: Token Expired or Insufficient Scope

When generating the Trello token, you choose an expiration and scope. If the expiration was set to 30 days and it has now been more than 30 days since setup, the token has expired. Every API call returns invalid token.

The scope must include write to create cards. A token generated with scope=read can fetch board and list data but cannot create, update, or delete anything.

Always generate tokens with:

  • expiration=never for server integrations
  • scope=read,write

If your existing token has expired or has read-only scope, generate a new one using the URL in Cause 1 above.

Connecting CF7 to Trello Directly

Trello's card creation API is genuinely one of the simplest in the project management space. You do not need a dedicated plugin. Contact Form to API handles the POST request from the WordPress dashboard.

Configure:

  • Endpoint: https://api.trello.com/1/cards
  • Method: POST
  • Body:
{
  "key": "YOUR_API_KEY",
  "token": "YOUR_TOKEN",
  "idList": "YOUR_LIST_ID",
  "name": "Enquiry from [your-name]",
  "desc": "**Email:** [your-email]\n**Phone:** [your-phone]\n**Message:** [your-message]"
}
Enter fullscreen mode Exit fullscreen mode

Every CF7 field in brackets gets replaced with the actual submitted value before the request is sent. The response log shows you whether Trello created the card and what the card ID is.

Quick Diagnosis

# 1. Test your API key and token
curl "https://api.trello.com/1/members/me?key=YOUR_KEY&token=YOUR_TOKEN"
# Expect: your Trello user object
# "invalid key" = API key wrong
# "invalid token" = token wrong, expired, or wrong scope

# 2. Get your board's lists to find List IDs
curl "https://api.trello.com/1/boards/YOUR_BOARD_ID/lists?key=YOUR_KEY&token=YOUR_TOKEN"

# 3. Create a test card
curl -X POST "https://api.trello.com/1/cards?key=YOUR_KEY&token=YOUR_TOKEN&idList=YOUR_LIST_ID&name=Test+Card"
# Expect: card object with "id" field
# "invalid id" = wrong List ID (possibly using Board ID instead)
Enter fullscreen mode Exit fullscreen mode
Symptom Cause Fix
invalid key Wrong API key Get key from trello.com/power-ups/admin
invalid token Token wrong, expired, or read-only Regenerate with expiration=never&scope=read,write
invalid id on card creation Board ID used instead of List ID Fetch lists from board, use the list id
Card created but only has name Free plugin limitation on description Use direct API with multi-field description string
Cards stopped being created Token expired Check token age, regenerate if past expiration

Top comments (0)