---
page_type: error
code: 60224
message: "60224: Missing substitutions for selected template"
level: ERROR
product: Verify
---

## Description

The selected template has one or more expected substitutions that were not provided in the request.

### Possible Causes

- The template requires extra fields for building the message that are not included in the request.
- The substitutions were not provided in the correct format (stringified JSON).

### Possible Solutions

- Include all the substitutions for the place holder variables with the `TemplateCustomSubstitution` parameter.
- Format the variable object as stringified JSON.

For example, the following template requires a **`uuid`** substitution:

"**Your {{friendly\_name}} login link: https://example.com/verify.html?uuid={{uuid}}\&code={{code}}**"

The expected request in cURL:

```bash
curl -X POST https://verify.twilio.com/v2/Services/VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Verifications \
--data-urlencode "To=+15017122661" \
--data-urlencode "Channel=sms" \
--data-urlencode "TemplateSid=HJXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
--data-urlencode "TemplateCustomSubstitutions={ \"uuid\": \"MY_UNIQUE_ID\" }" \
-u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN
```

The expected request in Node.js:

```javascript
const verification = await client.verify.v2
  .services("VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
  .verifications.create({
    channel: "sms",
    templateSid: "HJXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    to: "+15017122661",
    templateCustomSubstitutions: '{ "uuid": "MY_UNIQUE_ID" }'
  });
```

The following variables are auto-populated by Twilio and do **not** need to be included in your request:

- `{{friendly_name}}`
- `{{code}}`
- `{{ttl}}`