diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java
index d0437cb58..efaba6cf1 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java
@@ -185,6 +185,7 @@ private Publisher(Builder builder) throws IOException {
             .setExecutorProvider(FixedExecutorProvider.create(executor))
             .setTransportChannelProvider(builder.channelProvider)
             .setEndpoint(builder.endpoint)
+            .setUniverseDomain(builder.universeDomain)
             .setHeaderProvider(builder.headerProvider);
     stubSettings
         .publishSettings()
@@ -717,7 +718,8 @@ public static final class Builder {
     static final long DEFAULT_COMPRESSION_BYTES_THRESHOLD = 240L;
 
     String topicName;
-    private String endpoint = PublisherStubSettings.getDefaultEndpoint();
+    private String endpoint = null;
+    private String universeDomain = null;
 
     // Batching options
     BatchingSettings batchingSettings = DEFAULT_BATCHING_SETTINGS;
@@ -857,6 +859,12 @@ public Builder setEndpoint(String endpoint) {
       return this;
     }
 
+    /** Gives the ability to override the universe domain. */
+    public Builder setUniverseDomain(String universeDomain) {
+      this.universeDomain = universeDomain;
+      return this;
+    }
+
     /** Gives the ability to enable transport compression. */
     public Builder setEnableCompression(boolean enableCompression) {
       this.enableCompression = enableCompression;
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java
index 1d1017dd4..1723c72b1 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java
@@ -192,6 +192,7 @@ private Subscriber(Builder builder) {
               .setTransportChannelProvider(channelProvider)
               .setHeaderProvider(builder.headerProvider)
               .setEndpoint(builder.endpoint)
+              .setUniverseDomain(builder.universeDomain)
               .build();
       // TODO(pongad): what about internal header??
     } catch (Exception e) {
@@ -491,7 +492,8 @@ public static final class Builder {
         SubscriptionAdminSettings.defaultCredentialsProviderBuilder().build();
     private Optional<ApiClock> clock = Optional.absent();
     private int parallelPullCount = 1;
-    private String endpoint = SubscriberStubSettings.getDefaultEndpoint();
+    private String endpoint = null;
+    private String universeDomain = null;
 
     Builder(String subscription, MessageReceiver receiver) {
       this.subscription = subscription;
@@ -670,6 +672,12 @@ public Builder setEndpoint(String endpoint) {
       return this;
     }
 
+    /** Gives the ability to override the universe domain. */
+    public Builder setUniverseDomain(String universeDomain) {
+      this.universeDomain = universeDomain;
+      return this;
+    }
+
     /** Gives the ability to set a custom clock. */
     Builder setClock(ApiClock clock) {
       this.clock = Optional.of(clock);