Power Apps

Create Outlook Calendar Events from Power Apps

Send an approved date and time from Power Apps to Power Automate, create the Outlook event in the intended mailbox and handle time zones and errors safely.

Collab365 Team · 30 March 2026 · Updated 24 August 2026 · 3 min read

The safest pattern is to let Power Apps collect and validate the event details, then let Power Automate create the Outlook event. Keep the source time zone explicit. A date picker does not carry enough information to decide what 09:00 means for every user or mailbox.

Decide the ownership first

Before building the flow, confirm:

  • which mailbox or calendar should own the event
  • whether the connection user has permission to write there
  • whether the app creates tentative requests or approved events
  • the source time zone for the entered time
  • whether attendees should receive invitations
  • the licensing required by every connector in the flow

An event created through a maker's personal Outlook connection belongs to that connection's context. For a team process, use an approved service ownership pattern or a shared calendar connection with the required permissions. Test with a non-owner user.

Collect an unambiguous local date and time

Use a Date Picker plus hour and minute dropdowns. In this example the dropdowns return numbers and the app combines them for validation:

With(
    {
        startLocal: DatePickerStart.SelectedDate +
            Time(Value(ddStartHour.Selected.Value), Value(ddStartMinute.Selected.Value), 0),
        endLocal: DatePickerEnd.SelectedDate +
            Time(Value(ddEndHour.Selected.Value), Value(ddEndMinute.Selected.Value), 0)
    },
    If(
        endLocal <= startLocal,
        Notify("End time must be after start time", NotificationType.Error),
        Set(varStartLocal, startLocal);
        Set(varEndLocal, endLocal)
    )
)

Control and field names differ between apps. Confirm the selected item shape because some dropdowns expose Value, while others expose a named column.

Create the flow

Create a flow with the Power Apps (V2) trigger. Add explicit inputs for subject, start date/time text, end date/time text, source time zone, location and notes. Passing the zone separately avoids pretending that an unzoned string is UTC.

In Power Apps, call the flow only after validation. Use a stable, culture-independent text format:

IfError(
    Set(
        varResult,
        CreateCalendarEvent.Run(
            txtSubject.Text,
            Text(varStartLocal, "[$-en-US]yyyy-mm-dd") & "T" & Text(varStartLocal, "[$-en-US]hh:mm:ss"),
            Text(varEndLocal, "[$-en-US]yyyy-mm-dd") & "T" & Text(varEndLocal, "[$-en-US]hh:mm:ss"),
            ddTimeZone.Selected.Value,
            txtLocation.Text,
            txtNotes.Text
        )
    ),
    Notify("The calendar event was not created. Try again or contact support.", NotificationType.Error)
)

Power Fx format tokens and control shapes can vary with the app design. Inspect the actual values sent during testing rather than assuming the formula alone proves correctness.

Convert the time zone in Power Automate

Use the Convert time zone action for the start and end values. Set the source zone from an approved list, then convert to the format and destination expected by the Outlook action. Microsoft's time-zone guidance explains that triggers and actions may use different timestamp formats and zones.

Do not silently use the flow owner's local zone. Daylight-saving changes make fixed hour offsets unreliable. Store a recognised zone identifier and test dates on both sides of a clock change.

Then add the appropriate Microsoft 365 Outlook action to create the event. Map subject, start, end, time zone, location, body and attendees deliberately. Whether an action creates an event in the signed-in user's calendar or a shared calendar depends on the chosen action and connection permissions. Use the current Outlook connector reference for its parameters and known limits.

Return a useful result

End the flow with Respond to a Power App or flow. Return a success flag, event identifier or web link when available, and a safe error message. Use Power Automate scopes and run-after settings so the app receives a controlled failure response.

Avoid duplicate events when users tap twice or retry after a timeout. Create a request record with a unique ID before calling the flow, or store that ID on the resulting event and check it before creating another.

Test the cases that usually break

Test:

  • end before start
  • an all-day event
  • daylight-saving transition dates
  • two users in different time zones
  • a shared calendar permission failure
  • an invalid or removed attendee
  • a connector timeout followed by a retry
  • app and flow versions imported into a new environment

Put the app and flow in a solution. Use connection references and environment variables where appropriate, then rebind and test them after import. A successful maker test does not prove that every user can access the target calendar.

For more buildable Power Apps and Power Automate patterns with ownership and failure handling included, join the Power Apps Builders Space.

Sources