diff --git a/server/api.go b/server/api.go
index 4b210df3e46106a903f66d59ddc934e0414d8056..4454c3ca49e60901c9218d3280d039072594d36f 100644
--- a/server/api.go
+++ b/server/api.go
@@ -6,6 +6,7 @@ import (
 	"errors"
 	"fmt"
 	"log/slog"
+	"strconv"
 
 	"golang.org/x/crypto/bcrypt"
 
@@ -430,10 +431,11 @@ func (d dexAPI) CreateConnector(ctx context.Context, req *api.CreateConnectorReq
 	}
 
 	c := storage.Connector{
-		ID:     req.Connector.Id,
-		Name:   req.Connector.Name,
-		Type:   req.Connector.Type,
-		Config: req.Connector.Config,
+		ID:              req.Connector.Id,
+		Name:            req.Connector.Name,
+		Type:            req.Connector.Type,
+		ResourceVersion: "1",
+		Config:          req.Connector.Config,
 	}
 	if err := d.s.CreateConnector(ctx, c); err != nil {
 		if err == storage.ErrAlreadyExists {
@@ -446,7 +448,7 @@ func (d dexAPI) CreateConnector(ctx context.Context, req *api.CreateConnectorReq
 	return &api.CreateConnectorResp{}, nil
 }
 
-func (d dexAPI) UpdateConnector(ctx context.Context, req *api.UpdateConnectorReq) (*api.UpdateConnectorResp, error) {
+func (d dexAPI) UpdateConnector(_ context.Context, req *api.UpdateConnectorReq) (*api.UpdateConnectorResp, error) {
 	if !featureflags.APIConnectorsCRUD.Enabled() {
 		return nil, fmt.Errorf("%s feature flag is not enabled", featureflags.APIConnectorsCRUD.Name)
 	}
@@ -476,6 +478,10 @@ func (d dexAPI) UpdateConnector(ctx context.Context, req *api.UpdateConnectorReq
 			old.Config = req.NewConfig
 		}
 
+		if rev, err := strconv.Atoi(defaultTo(old.ResourceVersion, "0")); err == nil {
+			old.ResourceVersion = strconv.Itoa(rev + 1)
+		}
+
 		return old, nil
 	}
 
@@ -536,3 +542,11 @@ func (d dexAPI) ListConnectors(ctx context.Context, req *api.ListConnectorReq) (
 		Connectors: connectors,
 	}, nil
 }
+
+func defaultTo[T comparable](v, def T) T {
+	var zeroT T
+	if v == zeroT {
+		return def
+	}
+	return v
+}