Skip to content
WebViewGold Vibe Coding to App Store
English
Get WebViewGold

ChatGPT & Codex + calendar

Add-to-calendar buttons for your ChatGPT & Codex app

A booking that is not in the user's calendar is a no-show waiting to happen. On iOS, WebViewGold lets users add an event to the Calendar app from a plain link to an .ics file, so your ChatGPT & Codex app needs nothing more than a URL that returns the event. Android has no dedicated calendar API in WebViewGold; here is what works there instead.

From $109 one-time per platform, or let our team do it all from $698.

  • Approval guarantee – or money back within 14 days
  • No coding needed
  • One-time payment, free updates
  • 24/7 human support
  • Made in Germany since 2014 · ISO 27001

What works on each platform

iOS: link to an .ics file

WebViewGold is set up for Calendar (formerly iCal): a normal link to an .ics file lets the user add the entry to the iPhone or iPad calendar. No URL scheme, no JavaScript bridge, and the web app never reads the user's calendar; it only offers an event.

Android: download or Google Calendar

The Android documentation has no calendar API. Two routes work: add .ics to downloadableExtension in Config.java so the file is downloaded and can be opened with a calendar app that imports .ics files, and offer an "Add to Google Calendar" link that opens outside the app.

One event file per booking

Your server returns a small text file (a VCALENDAR with one VEVENT) for each booking, class or appointment. The same URL serves the website, the iOS app and the Android download.

Prompt for ChatGPT & Codex

Paste this into ChatGPT & Codex to implement the web-app side. Review the result, publish, then test inside the WebViewGold app.

Prompt for ChatGPT or Codex
Prompt for Codex: Add calendar export for bookings, compatible with the WebViewGold app wrapper, and open a pull request. Create GET /calendar/:token.ics (random token per booking) returning one VEVENT with a stable UID, DTSTAMP, DTSTART and DTEND in UTC ending in Z, SUMMARY, LOCATION, DESCRIPTION with the booking URL and a VALARM one hour before, served as text/calendar; charset=utf-8. Use a maintained iCalendar library. Add calendarLinks(booking) that returns this URL and a calendar.google.com/calendar/render?action=TEMPLATE link. Show the .ics link on all platforms and the Google link when navigator.userAgent contains WebViewGold-Android. If appointments are parsed from free text with the OpenAI API, require structured JSON with ISO 8601 times and a time zone and build the file from it on the server. Add tests and document the rules in AGENTS.md.

Great way of converting your web app to a native app! Fast turn-around, and a great way to get your apps into the app stores without the need to develop a full native app!

Kevin Joling · FlightConnections & TrainConnections · Trustpilot

Add an "Add to calendar" button

About an hour, most of it the .ics endpoint.

  1. Create the .ics endpoint

    Add a route such as /calendar/BOOKING_TOKEN.ics that returns the event with Content-Type: text/calendar; charset=utf-8. Keep the path ending in .ics, as in the WebViewGold example, and use an unguessable token instead of relying on the login session.

  2. Fill in the fields that matter

    A stable UID per booking, DTSTAMP, DTSTART and DTEND in UTC (ending in Z), SUMMARY, LOCATION and a DESCRIPTION with a link back to the booking. Escape commas and semicolons in text.

  3. Link to it in the same tab

    A plain <a href="https://yourdomain.com/calendar/TOKEN.ics">. Do not open it in a new window or with target="_blank"; a web view has nowhere to show one.

  4. Handle Android

    Add .ics to downloadableExtension in Config.java for the download route, and show an "Add to Google Calendar" link with calendar.google.com in BROWSER_BLACKLIST, so it opens in the system browser, where most users are signed in to Google, instead of inside the web view.

  5. Test on real devices

    Add an event on an iPhone, then check the time zone, the duration and the link in the description. On Android, try phones from two manufacturers; calendar apps differ in how they open downloaded .ics files.

A minimal .ics file

This is all a calendar needs. Lines end with CRLF in the iCalendar spec; libraries handle that for you. Server side of your stack: Your own API or serverless functions.

text
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//YourApp//Bookings//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20261101T120000Z
DTSTART:20261205T170000Z
DTEND:20261205T180000Z
SUMMARY:Yoga class
LOCATION:Studio 2\, 14 Main Street
DESCRIPTION:Manage your booking: https://yourdomain.com/bookings/123
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:DISPLAY
DESCRIPTION:Yoga class in one hour
END:VALARM
END:VEVENT
END:VCALENDAR

The button logic

The .ics link everywhere, the Google Calendar link as an extra on Android and desktop:

javascript
// Custom user agents: "... WebViewGold-iOS" (Config.swift), "... WebViewGold-Android" (Config.java)
var ua = navigator.userAgent;
var IS_ANDROID_APP = ua.indexOf("WebViewGold-Android") !== -1;
var IS_IOS_APP = ua.indexOf("WebViewGold-iOS") !== -1;

function icsUrl(b) { return "https://yourdomain.com/calendar/" + b.token + ".ics"; }

function googleCalendarUrl(b) {
  var f = function (d) { return d.toISOString().replace(/[-:]|\.\d{3}/g, ""); };
  return "https://calendar.google.com/calendar/render?action=TEMPLATE" +
    "&text=" + encodeURIComponent(b.title) +
    "&dates=" + f(b.start) + "/" + f(b.end) +
    "&details=" + encodeURIComponent(b.url) +
    "&location=" + encodeURIComponent(b.location);
}

// Render: always the .ics link; the Google link unless IS_IOS_APP

Pitfalls

  • Time zones: write times in UTC with a trailing Z, or include a proper VTIMEZONE block. Floating local times shift for travelers and for users in other zones.
  • A new UID on every download can create duplicates. Keep one UID per booking; how a calendar treats a re-import varies by app.
  • Login-protected .ics URLs: the request that fetches the file may not carry the user's web session. A random token per booking is the reliable option.
  • Calendar subscriptions (webcal:// feeds) are a different feature; the WebViewGold docs cover single .ics files.
  • A calendar button is a nice native touch, not a feature that carries an app through review on its own. Combine it with push reminders and deep links back to the booking.

Frequently asked questions

Does WebViewGold have a calendar API for Android?

Not a dedicated one; the calendar integration in the docs is iOS only. On Android, offer the .ics file as a download (add .ics to downloadableExtension in Config.java) and an Add to Google Calendar link that opens outside the app.

Can the app read the user's calendar to check availability?

No. The .ics flow only offers an event that the user adds. Availability belongs on your server, based on your own booking data.

Can I add recurring events or reminders?

Yes, inside the .ics file: an RRULE line for repeating classes and a VALARM block for a reminder. How the reminder appears depends on the user's calendar app; for reminders you control, use push notifications.

How do I generate the .ics file for my ChatGPT & Codex app?

A small server route builds the text. For one event no library is needed, though ical-generator (Node) or icalendar (Python) helps with recurring events and escaping. Ask ChatGPT & Codex for an endpoint that returns text/calendar for a booking token.

Do calendar links work in the browser too?

Yes. The same .ics URL downloads or opens the event in desktop and mobile browsers, so one button serves the website and both apps.

Three ways to get your app into the stores

Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.

Do it yourself

$109 per platform, one-time

The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.

See plans on the main page

Cloud Builder

$349 per license, one-time add-on

No Mac, no Xcode, no Android Studio: configure in the browser, we build both apps in the cloud and hand them to App Store Connect and the Play Console.

How the Cloud Builder works Try the free demo

Full Service

$698 per platform $798

Send us your URL and icon. Our team configures, builds and delivers your app within 72 hours, white-label, with source projects. Both platforms for $1,158.

Full Service details Powered by WeSetupYourWebViewApp

Winter Sale prices valid until December 31, 2026.

Ready to ship your ChatGPT & Codex app?

App Store & Google Play approval guarantee – or your money back within 14 days

Rather hand it over? Full Service: we configure, build and deliver within 72 hours, from $698 per platform. Questions? Chat with us 24/7.

Refunds are granted under the conditions listed in our FAQ: a non-content rejection by Apple and/or Google, claimed within 14 days after purchase.