A shift change form for swaps and cover

Updated 2026-10-30

Shift swaps get settled in a group chat. Then the chat moves on, and nobody tells the manager. I use one link instead. Staff ask for the change there, and I see every request in one place before the schedule is final.

How it works

  1. The person says who they are and which shift they want to change.
  2. They pick what they need: a swap, cover, a new time, or to drop the shift.
  3. They name the coworker who agreed and the shift they would take in return.
  4. They add a reason, so I can judge how urgent it is.

A sample chat

A staff member's AI might ask: "Which date is the shift you want to change?" Then "Has a coworker agreed to cover it?" Then "What is the main reason?" It shows all the answers and sends them only after a yes. Read more about agent-fillable forms.

Good to know

This works like a shift trade form, but it approves nothing. I read the rows, decide, and update the schedule myself. Sort the CSV by shift date, not by arrival.

Short of people to cover? An availability form shows who is free. Hiring for the same rota? Try a restaurant job application. More ideas live in HR and recruiting forms and forms for restaurants.

Questions

How do I see which swaps already have a partner?

Filter the CSV on `coworker_agreed`. A ticked box means the person already found someone, so you only chase the open requests.

Can I stop requests that arrive too close to the shift?

Yes. Set `close_at` to the day you post the schedule, and the form stops taking requests then. The emergency case is a phone call, not a form.

Does the form tell staff their swap is approved?

No. It only collects the request. You decide, update your schedule and tell the person yourself. The form sends nothing back to the staff member.

Try the form

Live demo ยท nothing is saved

Ask to change a shift

Send this at least a few days before the shift if you can. Your manager reads every request.

For example 4pm to 10pm.

What do you need? (required)

Leave it blank if you have not found anyone yet.

My coworker has agreed to this
Main reason
The shift starts within the next 48 hours

Or paste the JSON

Give this to your AI. It needs the AI Form API MCP server or an API key. It makes the form and sends you the link.

text
Create this form with the AI Form API create_form tool (or POST https://aiformapi.com/v1/forms with my API key). Then reply with the public_url.

{
  "title": "Ask to change a shift",
  "description": "Send this at least a few days before the shift if you can. Your manager reads every request.",
  "fields": [
    {
      "id": "staff_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "staff_email",
      "label": "Your work email",
      "type": "email",
      "required": true
    },
    {
      "id": "shift_date",
      "label": "Date of the shift you want to change",
      "type": "date",
      "required": true
    },
    {
      "id": "shift_hours",
      "label": "Start and finish time of that shift",
      "type": "short_text",
      "required": true,
      "help": "For example 4pm to 10pm.",
      "max_length": 100
    },
    {
      "id": "station_or_role",
      "label": "Your role or station on that shift",
      "type": "short_text",
      "max_length": 100
    },
    {
      "id": "change_type",
      "label": "What do you need?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Swap with a coworker",
        "A coworker will cover it",
        "Move it to a different time",
        "Drop the shift, no cover yet"
      ]
    },
    {
      "id": "coworker_name",
      "label": "Coworker you arranged this with",
      "type": "short_text",
      "help": "Leave it blank if you have not found anyone yet.",
      "max_length": 150
    },
    {
      "id": "coworker_agreed",
      "label": "My coworker has agreed to this",
      "type": "checkbox"
    },
    {
      "id": "return_shift_date",
      "label": "Date of the shift you would take in return",
      "type": "date"
    },
    {
      "id": "swap_reason",
      "label": "Main reason",
      "type": "single_choice",
      "options": [
        "Family",
        "Study or exam",
        "Appointment",
        "Transport",
        "Second job",
        "Other"
      ]
    },
    {
      "id": "reason_note",
      "label": "Anything else your manager should know",
      "type": "long_text",
      "max_length": 500
    },
    {
      "id": "within_two_days",
      "label": "The shift starts within the next 48 hours",
      "type": "checkbox"
    }
  ]
}

Or call the API

bash
curl -X POST https://aiformapi.com/v1/forms \
  -H "Authorization: Bearer $AIFORMAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Ask to change a shift","description":"Send this at least a few days before the shift if you can. Your manager reads every request.","fields":[{"id":"staff_name","label":"Your name","type":"short_text","required":true,"max_length":150},{"id":"staff_email","label":"Your work email","type":"email","required":true},{"id":"shift_date","label":"Date of the shift you want to change","type":"date","required":true},{"id":"shift_hours","label":"Start and finish time of that shift","type":"short_text","required":true,"help":"For example 4pm to 10pm.","max_length":100},{"id":"station_or_role","label":"Your role or station on that shift","type":"short_text","max_length":100},{"id":"change_type","label":"What do you need?","type":"single_choice","required":true,"options":["Swap with a coworker","A coworker will cover it","Move it to a different time","Drop the shift, no cover yet"]},{"id":"coworker_name","label":"Coworker you arranged this with","type":"short_text","help":"Leave it blank if you have not found anyone yet.","max_length":150},{"id":"coworker_agreed","label":"My coworker has agreed to this","type":"checkbox"},{"id":"return_shift_date","label":"Date of the shift you would take in return","type":"date"},{"id":"swap_reason","label":"Main reason","type":"single_choice","options":["Family","Study or exam","Appointment","Transport","Second job","Other"]},{"id":"reason_note","label":"Anything else your manager should know","type":"long_text","max_length":500},{"id":"within_two_days","label":"The shift starts within the next 48 hours","type":"checkbox"}]}'

JSON definition

json
{
  "title": "Ask to change a shift",
  "description": "Send this at least a few days before the shift if you can. Your manager reads every request.",
  "fields": [
    {
      "id": "staff_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "staff_email",
      "label": "Your work email",
      "type": "email",
      "required": true
    },
    {
      "id": "shift_date",
      "label": "Date of the shift you want to change",
      "type": "date",
      "required": true
    },
    {
      "id": "shift_hours",
      "label": "Start and finish time of that shift",
      "type": "short_text",
      "required": true,
      "help": "For example 4pm to 10pm.",
      "max_length": 100
    },
    {
      "id": "station_or_role",
      "label": "Your role or station on that shift",
      "type": "short_text",
      "max_length": 100
    },
    {
      "id": "change_type",
      "label": "What do you need?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Swap with a coworker",
        "A coworker will cover it",
        "Move it to a different time",
        "Drop the shift, no cover yet"
      ]
    },
    {
      "id": "coworker_name",
      "label": "Coworker you arranged this with",
      "type": "short_text",
      "help": "Leave it blank if you have not found anyone yet.",
      "max_length": 150
    },
    {
      "id": "coworker_agreed",
      "label": "My coworker has agreed to this",
      "type": "checkbox"
    },
    {
      "id": "return_shift_date",
      "label": "Date of the shift you would take in return",
      "type": "date"
    },
    {
      "id": "swap_reason",
      "label": "Main reason",
      "type": "single_choice",
      "options": [
        "Family",
        "Study or exam",
        "Appointment",
        "Transport",
        "Second job",
        "Other"
      ]
    },
    {
      "id": "reason_note",
      "label": "Anything else your manager should know",
      "type": "long_text",
      "max_length": 500
    },
    {
      "id": "within_two_days",
      "label": "The shift starts within the next 48 hours",
      "type": "checkbox"
    }
  ]
}