Customer Service App (CSA)

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

FieldRequiredNotes
authorEmailAddressnoInformational purposes for the FI
sourceTicketIdyesPublisher's identifier associated with this ticket
sourceCustomerIdyesPublisher's customer Id
transactionIdsyesPublisher can include up to 10 different transactions, but they should all be related to the same offer.
offerIdyesCardlytics Ad Id field
descriptionyesDescription 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}

FieldRequiredNotes
authorEmailAddressnoThe email address associated with the agent who is managing this issue
cdlxTicketIdyesThe unique identifier for the ticket on the Cardlytics side
sourceTicketIdyesThe Publisher’s identifier for the ticket.
sourceCustomerIdyesThe Publisher’s identifier for the customer.
statusyes

The current status of the ticket:

- In Process

- Closed

activationDatenoThe date the customer activated the offer
descriptionyesThe description of the issue provided when the ticket was open
resolutionTypeno

- No Credit: Not eligible for reward

- No Credit: Reward Pending

- No Credit: Reward Received

- Blank

cardlyticsResponsenoThe textual response from Cardlytics providing more detail regarding the resolution
offerIdyesThe offer Id for which this issue was reported
transactionIdsyesThe transaction Ids associated with this issue
redemptionIdnoThe redemption Ids associated with this issue
ticketCreatedDateyesDate/Time the ticket was created. Example: 2024-02-08T15:30:01Z
ticketSolvedDatenoDate/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)

FieldRequiredNotes
authorEmailAddressnoThe email address associated with the agent who is managing this issue
cdlxTicketIdnoThe unique identifier for the ticket on the Cardlytics side
sourceTicketIdyesThe Publisher’s identifier for the ticket.
sourceCustomerIdyesThe Publisher’s identifier for the customer.
statusno

The current status of the ticket. Either:

- In Process

- Closed

processingStatusyesThis is a field that is specifically used to convey the status of the API call. SuccessError
processingStatusMessagenoThis is the field we will use to convey the specific error message if one occurred
descriptionnoThe description of the issue provided when the ticket was open
resolutionTypeno

No Credit: Not eligible for reward

No Credit: Reward Pending

No Credit: Reward Received

cardlyticsResponsenoThe 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"
}