NewWe open-sourced 50+ Laravel packages
Custom AI apps, agents and automation — Roundly ConsultingRoundly
All packages

Require the package. The service provider is auto-discovered and the Contacts facade alias is registered for you:

composer require roundly-consulting/contacts-for-laravel

php artisan vendor:publish --tag="contacts-migrations"
php artisan migrate

The migration is publish-only — the package never runs it for you. It lands as a timestamped file you own. Re-publishing an unedited copy (with --force) overwrites it in place instead of adding a second one; a copy you edited — or any other same-named migration — is never overwritten: the package’s migration is published beside it under a fresh timestamp, and you decide which one to keep.

Companion migrations

Composer pulls in addresses-for-laravel and connections-for-laravel automatically. Every Contact carries a structured address book and relationship edges through them, and deleting a contact cleans both up — so publish and run their migrations as well:

php artisan vendor:publish --tag="addresses-migrations"
php artisan vendor:publish --tag="connections-migrations"
php artisan migrate

Config and translations

Both are optional — every config key has a default, and the English strings ship with the package. Publish only to override:

php artisan vendor:publish --tag="contacts-config"
php artisan vendor:publish --tag="contacts-translations"

The publish tags are contacts-migrations, contacts-config and contacts-translations.

Show your open-source love

This package is free and MIT-licensed. If it saves you time, a one-off donation or a Patreon membership keeps it maintained, tested and documented.

More ways to support, including crypto

By donating, you agree to our donation terms.

Want this built into your product?

We integrate our packages into custom Laravel and AI builds. Tell us what you're working on and we'll reply within 48 hours.