I'm trying to send parameters in the payload of a WhatsApp template, but I'm struggling find the right format. I have a python script that sends the template and it's logs seem to indicate that I am sending the to_number value with the template: Chatbot Logs: Successfully sent template to 27815492711 Type: payload, Value: {"action": "INIT", "to_number": "27815492711"} Payload parameters: {"messaging_product":"whatsapp", "recipient_type":"individual", "template":{…}, "to":"27815492711", "type":"template"} WhatsApp payload being sent: Chatbot endpoint that sends the template: payload = { 'messaging_product': 'whatsapp', 'recipient_type': 'individual', 'to': to_number, 'type': 'template', 'template': { 'name': TEMPLATE_NAME, 'language': { 'code': 'en', }, 'components': [ { 'type': 'header', 'parameters': [ { 'type': 'image', 'image': { 'link': 'https://firebasestorage.googleapis.com/v0/b/....', }, }, ], }, { 'type': 'button', 'sub_type': 'flow', 'index': '0', 'parameters': [ { 'type': 'payload', 'payload': json.dumps({ 'action': 'INIT', 'to_number': to_number }) } ] }, ], }, } But the Python endpoint that handles the Flow (a different endpoint that gets called when the user opens the template that was sent by the chatbot endpoint) indicates that the parameter should have been passed as string: Flow endpoint logs: Action: INIT, Data: {'error': 'payload-schema-error', 'error_message': '[key=data.to_number] in object should be of type '} Decrypted Body: {'action': 'INIT', 'screen': '', 'version': 300, 'flow_token': 'unused', 'data': {'error': 'payload-schema-error', 'error_message': '[key=data.to_number] in object should be of type '}} [httpRequest.requestMethod: POST] [httpRequest.status: 200] [httpRequest.responseSize: 194 B] [httpRequest.latency: 167 ms] [httpRequest.userAgent: facebookexternalua] Handling INIT for user number: None Action: INIT, Data: {} Decrypted Body: {'data': {}, 'flow_token': 'unused', 'screen': '', 'action': 'INIT', 'version': '3.0'} Flow endpoint code: elif action == "INIT": try: user_number = data.get("to_number") options = [ { "id": name.replace(" ", "_"), "title": name } for name in client_names ] response_dict = { "screen": "DETAILS", "data": { "to_number": user_number } } except Exception as e: logger.exception("Error in INIT action") return https_fn.Response(json.dumps({"error": str(e)}), status=500, mimetype="application/json") Continue reading...