If you manage dozens of domains, you quickly lose track of renewal dates. Keeping a spreadsheet works, but is error-prone. DomainReminder solves this: the script retrieves all renewal dates via the TransIP API and puts them directly into Apple Calendar as reminders - 14 days before the expiry date.

The full code is on GitHub: github.com/siekman-io/domainreminder

Apple Calendar filled with TransIP domain renewal reminders for December 2023


What does the script do?

  • Retrieves all domains from your TransIP account via the API
  • Creates a calendar event for each domain at 14 days before the renewal date
  • Saves the corresponding cancellation command in the appointment notes
  • Automatically syncs via iCloud to all your Apple devices
  • If you run the script again, appointments are updated with current dates

Requirements

  • Mac with macOS
  • Python (preinstalled on macOS)
  • jq - command-line JSON parser
  • TransIP API access (private key)

install jq

brew install jq

Don't have Homebrew yet? Install it first:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Installation

Clone the repository:

git clone https://github.com/siekman-io/domainreminder.git
cd domainreminder

Save your TransIP private key:

nano ~/.ssh/transip

Paste the private key from your TransIP control panel here (My account → API → Generate keys).

Set your calendar name:

nano ~/domainreminder/vars

Adjust the variable CALENDAR to the name of the calendar in Apple Calendar where the appointments should go, e.g. Domains.


Use

Give the scripts execution rights and run it:

chmod +x domainreminder.sh cancel.sh
./domainreminder.sh

The script runs through all your domains and creates an appointment each. Open Apple Calendar and you will see all the renewal dates conveniently arranged.

Cancel domain

The notes of each calendar appointment contain the cancellation command. You can also call it directly:

~/domainreminder/cancel.sh yourdomain.com

This sends the termination via the TransIP API - no manual login required.


Automate via cron

If you want to run the script automatically twice a year, add a cron job:

crontab -e
0 9 1 1,7 * cd ~/domainreminder && ./domainreminder.sh

This runs the script on 1 January and 1 July at 09:00.

// frequently asked questions
Does DomainReminder also work with registrars other than TransIP?

No, the script specifically uses the TransIP API. For other registrars, you would have to modify the API calls.

How often should I run the script?

Twice a year is sufficient - the reminders are then updated with the current renewal dates. You can also set it up as a cron job.

What exactly does cancel.sh do?

cancel.sh sends a cancellation request for a domain via the TransIP API. The command is also stored in the notes of the calendar appointment.

Lees het origineel in het Nederlands

← Lees in het Nederlands