diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
 # Revision history for pgmq-config
 
+## 0.4.0.0 -- 2026-07-14
+
+* Version bump only — coordinated release with pgmq-migration 0.4.0.0.
+  No library source changes since 0.3.0.0; the test suite was updated for the
+  native `pgmq-migration` API.
+* Bumped `pgmq-core`, `pgmq-hasql`, and `pgmq-effectful` dependency
+  bounds to `>=0.4 && <0.5`.
+
 ## 0.3.0.0 -- 2026-05-31
 
 * Version bump only — coordinated release with pgmq-effectful 0.3.0.0.
diff --git a/pgmq-config.cabal b/pgmq-config.cabal
--- a/pgmq-config.cabal
+++ b/pgmq-config.cabal
@@ -1,6 +1,6 @@
 cabal-version:   3.4
 name:            pgmq-config
-version:         0.3.0.0
+version:         0.4.0.0
 synopsis:
   Declarative queue configuration for PGMQ (PostgreSQL Message Queue)
 
@@ -54,15 +54,15 @@
     , hasql         ^>=1.10
     , hasql-pool    ^>=1.4
     , lens          ^>=5.3
-    , pgmq-core     >=0.3   && <0.4
-    , pgmq-hasql    >=0.3   && <0.4
+    , pgmq-core     >=0.4   && <0.5
+    , pgmq-hasql    >=0.4   && <0.5
     , text          ^>=2.1
 
   if flag(effectful)
     exposed-modules: Pgmq.Config.Effectful
     build-depends:
       , effectful-core  ^>=2.5 || ^>=2.6
-      , pgmq-effectful  >=0.3  && <0.4
+      , pgmq-effectful  >=0.4  && <0.5
 
   hs-source-dirs:     src
   default-language:   GHC2024
@@ -94,6 +94,7 @@
     , hasql
     , hasql-pool      ^>=1.4
     , lens            ^>=5.3
+    , pg-migrate
     , pgmq-config
     , pgmq-core
     , pgmq-hasql
diff --git a/test/EphemeralDb.hs b/test/EphemeralDb.hs
--- a/test/EphemeralDb.hs
+++ b/test/EphemeralDb.hs
@@ -10,6 +10,12 @@
   )
 where
 
+import Data.List.NonEmpty (NonEmpty (..))
+import Database.PostgreSQL.Migrate
+  ( defaultRunOptions,
+    migrationPlan,
+    runMigrationPlan,
+  )
 import EphemeralPg
   ( StartError,
     connectionSettings,
@@ -29,9 +35,9 @@
             PoolConfig.staticConnectionSettings connSettings
           ]
   pool <- Pool.acquire poolConfig
-  -- Install pgmq schema
-  installResult <- Pool.use pool Migration.migrate
+  component <- either (error . ("Invalid PGMQ migration component: " <>) . show) pure Migration.pgmqMigrations
+  plan <- either (error . ("Invalid PGMQ migration plan: " <>) . show) pure (migrationPlan (component :| []))
+  installResult <- runMigrationPlan defaultRunOptions connSettings plan
   case installResult of
-    Left poolErr -> error $ "Failed to install pgmq schema: " <> show poolErr
-    Right (Left migrationErr) -> error $ "Migration failed: " <> show migrationErr
-    Right (Right ()) -> action pool
+    Left migrationErr -> error $ "Migration failed: " <> show migrationErr
+    Right _ -> action pool
