🎉 Tickety V3 has now been released! Read more →
APIHTTP EventsApplication Events

Submit

Triggered when a user submits an application

Event Type

"application.submit"

Description

This event is triggered when a user successfully submits an application through an application panel.

Payload Structure

Prop

Type

Question Fields

Prop

Type

Example Payload

{
  "type": "application.submit",
  "payload": {
    "applicationId": "APP-5678",
    "panelId": "staff-application",
    "submitterId": "713115896805064856",
    "submitDate": "2024-01-18T15:30:00.000Z",
    "questions": [
      {
        "question": "What is your timezone?",
        "description": "Please include your usual availability.",
        "required": true,
        "type": "TEXT",
        "choices": [],
        "skipped": false,
        "answer": "CET, usually available after 6 PM",
        "answerRaw": "CET, usually available after 6 PM"
      },
      {
        "question": "Which roles are you applying for?",
        "description": null,
        "required": true,
        "type": "CHOICE",
        "choices": ["Moderator", "Support", "Developer"],
        "skipped": false,
        "answer": "Moderator, Support",
        "answerRaw": "0 1"
      }
    ]
  }
}

Example Usage

app.post("/webhook", async (req, res) => {
  const { type, payload } = req.body;

  if (type === "application.submit") {
    console.log("New application submitted!");
    console.log(`Application ID: ${payload.applicationId}`);
    console.log(`Panel: ${payload.panelId}`);
    console.log(`Submitter: ${payload.submitterId}`);
    console.log(`Questions: ${payload.questions.length}`);

    await storeApplication({
      id: payload.applicationId,
      panelId: payload.panelId,
      submitterId: payload.submitterId,
      submittedAt: payload.submitDate,
      status: "pending",
      questions: payload.questions,
    });

    const summary = payload.questions.map(question => ({
      question: question.question,
      answer: question.answer,
      skipped: question.skipped,
    }));

    await notifyApplicationReviewers(payload.panelId, {
      applicationId: payload.applicationId,
      submitterId: payload.submitterId,
      summary,
    });
  }

  res.status(200).send("OK");
});

Use Cases

  • Track application submissions in your own database
  • Send notifications to review teams
  • Generate application metrics and analytics
  • Integrate with external HR or management systems
  • Automate initial application processing
  • Store full question and answer snapshots for auditing

On this page