Learn how to create, retrieve, update and resolve a customer ticket
Abstract
Describes the process of creating a customer issue ticket, retrieving that ticket by performing a simple GET request, then getting an update on the status and resolution of the ticket.
Create a Ticket
To escalate a customer issue to Cardlytics, first create a ticket.
The ticket creation process is an asynchronous process. Cardlytics will deliver an immediate response back acknowledging that we have successfully received the request. If you do not receive a response back, please attempt to resubmit the ticket until you receive a successful response.
Once a ticket is received successfully, Cardlytics will then attempt to process the ticket. We will validate the information you have provided and will provide an update on the processing status via the ticket update process. See the section that describes how to receive an update.
To create a ticket, you perform a POST request that includes a JSON object in the body of the post. See the samples shown below:
POST
https://pub-api-eu.prod.cardlytics.com/csaapi/v2/tickets
Field | Required | Notes |
---|---|---|
authorEmailAddress | no | Informational purposes for the FI |
sourceTicketId | yes | Publisher's identifier associated with this ticket |
sourceCustomerId | yes | Publisher's customer Id |
transactionIds | yes | Publisher can include up to 10 different transactions, but they should all be related to the same offer. |
offerId | yes | Cardlytics Ad Id field |
description | yes | Description of the issue - what is the expected behavior versus the observed behavior? |
Sample Create payload:
{
"offerId": 1000030804,
"transactionIds": [
1132328647
],
"sourceTicketId": "testMonzo",
"sourceCustomerId": 1756524,
"authorEmailAddress": "[email protected]",
"description": "testMonzo description",
}
Sample Response payload: 202 Accepted
Retrieve a Ticket
To retrieve a ticket, simply perform a GET request on the Url shown below. The process is simple enough: you provide the sourceTicketId
(your identifier) in the path. The response will be a JSON representation of the fields listed below.
GET:
https://pub-api-eu.prod.cardlytics.com/csaapi/v2/tickets/{sourceTicketId}
Field | Required | Notes |
---|---|---|
authorEmailAddress | no | The email address associated with the agent who is managing this issue |
cdlxTicketId | yes | The unique identifier for the ticket on the Cardlytics side |
sourceTicketId | yes | The Publisher’s identifier for the ticket. |
sourceCustomerId | yes | The Publisher’s identifier for the customer. |
status | yes | The current status of the ticket: - In Process - Closed |
activationDate | no | The date the customer activated the offer |
description | yes | The description of the issue provided when the ticket was open |
resolutionType | no | - No Credit: Not eligible for reward - No Credit: Reward Pending - No Credit: Reward Received - Blank |
cardlyticsResponse | no | The textual response from Cardlytics providing more detail regarding the resolution |
offerId | yes | The offer Id for which this issue was reported |
transactionIds | yes | The transaction Ids associated with this issue |
redemptionId | no | The redemption Ids associated with this issue |
ticketCreatedDate | yes | Date/Time the ticket was created. Example: 2024-02-08T15:30:01Z |
ticketSolvedDate | no | Date/Time the ticket was solved. Example: 2024-02-09T23:00:01Z |
Sample GET response:
{
"authorEmailAddress": "[email protected]",
"cdlxTicketId": 111339,
"sourceTicketId": "testMonzo",
"sourceCustomerId": 70940001756524,
"status": "Closed",
"activationDate": "2023-10-22T10:54:09",
"description": "testMonzo description",
"cardlyticsResponse": "",
"offerId": 1000030804,
"transactionIds": [
1132328647
],
"ticketCreatedDate": "2024-06-13T22:48:17Z",
"ticketSolvedDate": "2024-06-13T23:06:16Z",
"redemptionIds": []
}
Receive an Update
As updates are made to a ticket, we will deliver ticket update events to the Publisher on the existing webhook.
The first update Cardlytics publishes after ticket creation will include the processingStatus and the processingStatusMessage to indicate whether or not the ticket was created successfully or if there were errors processing the ticket. If Cardlytics reports back an error after ticket creation, the Publisher should correct the error condition and resubmit the ticket. Common error conditions include:
- Invalid customer Id
- Invalid transaction Id
- Invalid redemption Id
- Invalid offer Id
- Etc.
The next update Cardlytics publishes will represent the final status of the ticket. The ticket will be closed with the appropriate resolution. If, for some reason, Cardlytics does not have enough information to process the ticket, these will also be closed. Tickets should be recreated with the correct information in this situation.
(Delivered on Webhook)
Field | Required | Notes | |
---|---|---|---|
authorEmailAddress | no | The email address associated with the agent who is managing this issue | |
cdlxTicketId | no | The unique identifier for the ticket on the Cardlytics side | |
sourceTicketId | yes | The Publisher’s identifier for the ticket. | |
sourceCustomerId | yes | The Publisher’s identifier for the customer. | |
status | no | The current status of the ticket. Either: - In Process - Closed | |
processingStatus | yes | This is a field that is specifically used to convey the status of the API call. Success | Error |
processingStatusMessage | no | This is the field we will use to convey the specific error message if one occurred | |
description | no | The description of the issue provided when the ticket was open | |
resolutionType | no | No Credit: Not eligible for reward No Credit: Reward Pending No Credit: Reward Received | |
cardlyticsResponse | no | The textual response from Cardlytics providing more detail regarding the resolution |
Sample payload success:
{
"cdlxTicketId": 111339,
"authorEmailAddress": "[email protected]",
"processingStatus": "Success",
"description": "testM description",
"sourceTicketId": "testM",
"status": "Closed",
"cardlyticsResponse": "",
"sourceCustomerId": "6a4a5ce6-9484-4051-84c7-07b5d845ab5c"
}
Sample payload Failed:
{
"offerId": 1000030804,
"transactionIds": [
1132328647
],
"resolutionType": "Courtesy Credit",
"sourceTicketId": "testM",
"sourceCustomerId": 1756524,
"authorEmailAddress": "[email protected]",
"description": "testM description",
"institutionId": "7094",
"processingStatusMessage": "Ticket already exists",
"processingStatus": "Error"
}