diff --git a/profiler/profiler.go b/profiler/profiler.go
index 9a90a14..5ea9723 100644
--- a/profiler/profiler.go
+++ b/profiler/profiler.go
@@ -37,6 +37,7 @@
 	"bytes"
 	"errors"
 	"log"
+	"os"
 	"runtime/pprof"
 	"sync"
 	"time"
@@ -406,14 +407,21 @@
 func initializeConfig(cfg Config) error {
 	config = cfg
 
-	if config.Service != "" {
+	switch {
+	case config.Service != "":
 		config.Target = config.Service
+	case config.Target == "":
+		config.Target = os.Getenv("GAE_SERVICE")
 	}
 
 	if config.Target == "" {
 		return errors.New("service name must be specified in the configuration")
 	}
 
+	if config.ServiceVersion == "" {
+		config.ServiceVersion = os.Getenv("GAE_VERSION")
+	}
+
 	if config.APIAddr == "" {
 		config.APIAddr = apiAddress
 	}
diff --git a/profiler/profiler_test.go b/profiler/profiler_test.go
index 1c1ee1f..780302d 100644
--- a/profiler/profiler_test.go
+++ b/profiler/profiler_test.go
@@ -22,6 +22,7 @@
 	"io"
 	"log"
 	"math/rand"
+	"os"
 	"strings"
 	"testing"
 	"time"
@@ -48,7 +49,7 @@
 	testZoneName        = "test-zone-name"
 	testTarget          = "test-target"
 	testService         = "test-service"
-	testServiceVersion  = "test-service-version"
+	testSvcVersion      = "test-service-version"
 	testProfileDuration = time.Second * 10
 	testServerTimeout   = time.Second * 15
 	wantFunctionName    = "profilee"
@@ -57,7 +58,7 @@
 func createTestDeployment() *pb.Deployment {
 	labels := map[string]string{
 		zoneNameLabel: testZoneName,
-		versionLabel:  testServiceVersion,
+		versionLabel:  testSvcVersion,
 	}
 	return &pb.Deployment{
 		ProjectId: testProjectID,
@@ -357,7 +358,7 @@
 		return testZoneName, nil
 	}
 
-	cfg := Config{Service: testService, ServiceVersion: testServiceVersion}
+	cfg := Config{Service: testService, ServiceVersion: testSvcVersion}
 	initializeConfig(cfg)
 	d, err := initializeDeployment()
 	if err != nil {
@@ -370,32 +371,93 @@
 }
 
 func TestInitializeConfig(t *testing.T) {
-	oldConfig := config
+	oldConfig, oldService, oldVersion := config, os.Getenv("GAE_SERVICE"), os.Getenv("GAE_VERSION")
 	defer func() {
 		config = oldConfig
+		if err := os.Setenv("GAE_SERVICE", oldService); err != nil {
+			t.Fatal(err)
+		}
+		if err := os.Setenv("GAE_VERSION", oldVersion); err != nil {
+			t.Fatal(err)
+		}
 	}()
-
+	testGAEService := "test-gae-service"
+	testGAEVersion := "test-gae-version"
 	for _, tt := range []struct {
 		config          Config
 		wantTarget      string
 		wantErrorString string
+		wantSvcVersion  string
+		onGAE           bool
 	}{
 		{
 			Config{Service: testService},
 			testService,
 			"",
+			"",
+			false,
 		},
 		{
 			Config{Target: testTarget},
 			testTarget,
 			"",
+			"",
+			false,
 		},
 		{
 			Config{},
 			"",
 			"service name must be specified in the configuration",
+			"",
+			false,
+		},
+		{
+			Config{Service: testService},
+			testService,
+			"",
+			testGAEVersion,
+			true,
+		},
+		{
+			Config{Target: testTarget},
+			testTarget,
+			"",
+			testGAEVersion,
+			true,
+		},
+		{
+			Config{},
+			testGAEService,
+			"",
+			testGAEVersion,
+			true,
+		},
+		{
+			Config{Service: testService, ServiceVersion: testSvcVersion},
+			testService,
+			"",
+			testSvcVersion,
+			false,
+		},
+		{
+			Config{Service: testService, ServiceVersion: testSvcVersion},
+			testService,
+			"",
+			testSvcVersion,
+			true,
 		},
 	} {
+		envService, envVersion := "", ""
+		if tt.onGAE {
+			envService, envVersion = testGAEService, testGAEVersion
+		}
+		if err := os.Setenv("GAE_SERVICE", envService); err != nil {
+			t.Fatal(err)
+		}
+		if err := os.Setenv("GAE_VERSION", envVersion); err != nil {
+			t.Fatal(err)
+		}
+
 		errorString := ""
 		if err := initializeConfig(tt.config); err != nil {
 			errorString = err.Error()
@@ -408,6 +470,9 @@
 		if config.Target != tt.wantTarget {
 			t.Errorf("initializeConfig(%v) got target: %v, want %v", tt.config, config.Target, tt.wantTarget)
 		}
+		if config.ServiceVersion != tt.wantSvcVersion {
+			t.Errorf("initializeConfig(%v) got service version: %v, want %v", tt.config, config.ServiceVersion, tt.wantSvcVersion)
+		}
 	}
 }
 
