diff --git a/profile/manifests/wordpress/instance.pp b/profile/manifests/wordpress/instance.pp
index cc80967cdcb1d8cdef670cb6c13bbab6ffc3f511..1d74d7d2075d8ff84c91f192845ea16d1103f56a 100644
--- a/profile/manifests/wordpress/instance.pp
+++ b/profile/manifests/wordpress/instance.pp
@@ -1,17 +1,22 @@
 # A WordPress instance
 define profile::wordpress::instance (
-  String $db_pass = 'password',
-  String $domain  = 'example.org',
+  String $db_pass,
+  String $domain = $name,
+  String $db_name = join(['wp_', regsubst($domain, /[^a-z0-9_]/, '_', 'G')]),
 ) {
-  profile::mysql::db { $name:
-    user => $name,
+  if $domain !~ /[a-z0-9_.]+/ {
+    fail("Invalid domain: ${domain}")
+  }
+
+  profile::mysql::db { $db_name:
+    user => $db_name,
     host => 'localhost',
     pass => $db_pass,
   }
 
-  $php_socket = "/var/run/php-fpm/${name}"
+  $php_socket = "/var/run/php-fpm/${db_name}"
 
-  php::fpm::pool { $name:
+  php::fpm::pool { $db_name:
     listen       => $php_socket,
     listen_owner => www-data,
     listen_group => www-data,